精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Vue3 終于可以共享自己的屏幕給別人看了!

開發 前端
現代瀏覽器通過 ??MediaDevices?? 接口提供媒體設備訪問能力,其中 getDisplayMedia 方法專門用于獲取屏幕共享流。該方法會觸發用戶授權流程,成功后可獲得包含屏幕內容的媒體流對象。

一、實現原理與技術背景

1.1 瀏覽器媒體能力基礎

現代瀏覽器通過 MediaDevices 接口提供媒體設備訪問能力,其中 getDisplayMedia 方法專門用于獲取屏幕共享流。該方法會觸發用戶授權流程,成功后可獲得包含屏幕內容的媒體流對象。

1.2 響應式設計目標

我們需要實現以下核心功能:

  • 響應式狀態管理: 實時反映屏幕共享狀態
  • 自動資源回收: 組件卸載時自動釋放媒體資源
  • 錯誤處理機制: 友好的錯誤提示與恢復能力
  • 跨瀏覽器兼容: 統一API差異處理

二、核心實現步驟分解

2.1 響應式狀態容器

// 創建響應式狀態容器
import { ref, reactive } from 'vue';

const state = reactive({
  stream: null,        // 當前媒體流對象
  isActive: false,     // 是否正在共享
  isSupported: !!navigator.mediaDevices?.getDisplayMedia, // 瀏覽器支持狀態
  error: null          // 錯誤信息
});

2.2 屏幕捕獲核心邏輯

// 啟動屏幕共享
asyncfunction startCapture(options = { video: true, audio: false }) {
try {
    // 請求屏幕共享權限
    const stream = await navigator.mediaDevices.getDisplayMedia({
      video: {
        displaySurface: 'browser', // 捕獲瀏覽器標簽頁
        logicalSurface: true,     // 包含滾動區域
        ...options.video
      },
      audio: options.audio
    });

    // 更新響應式狀態
    state.stream = stream;
    state.isActive = true;

    // 監聽停止事件(用戶點擊瀏覽器停止按鈕)
    stream.getTracks().forEach(track => {
      track.onended = () => stopCapture();
    });
  } catch (err) {
    handleError(err);
  }
}

// 停止屏幕共享
function stopCapture() {
  state.stream?.getTracks().forEach(track => track.stop());
  state.stream = null;
  state.isActive = false;
}

2.3 視頻元素綁定

// 自動綁定媒體流到video元素
export function useVideoBinding(videoRef) {
  watch(() => state.stream, (newStream) => {
    if (videoRef.value && newStream) {
      videoRef.value.srcObject = newStream;
      videoRef.value.play().catch(err => {
        console.error('視頻播放失敗:', err);
      });
    }
  });
}

三、完整實現代碼示例

3.1 屏幕捕獲Composable

// screen-capture.js
import { ref, reactive, watch, onUnmounted } from'vue';

// 響應式狀態管理
const state = reactive({
  stream: null,
  isActive: false,
  isSupported: checkSupport(),
  error: null
});

// 瀏覽器支持檢測
function checkSupport() {
return !!(
    navigator.mediaDevices &&
    navigator.mediaDevices.getDisplayMedia &&
    window.MediaStream
  );
}

// 錯誤處理中心
function handleError(error) {
  state.error = {
    name: error.name,
    message: error.message || '屏幕共享失敗',
    details: error
  };
console.error('屏幕共享錯誤:', error);
}

// 啟動屏幕共享
asyncfunction start(options = {}) {
if (!state.isSupported) {
    thrownewError('當前瀏覽器不支持屏幕共享');
  }

try {
    const stream = await navigator.mediaDevices.getDisplayMedia({
      video: {
        displaySurface: 'browser',
        logicalSurface: true,
        ...(options.video || {})
      },
      audio: !!options.audio
    });

    // 初始化狀態
    state.stream = stream;
    state.isActive = true;
    state.error = null;

    // 自動停止監聽
    stream.getTracks().forEach(track => {
      track.onended = () => stop();
    });

    return stream;
  } catch (error) {
    handleError(error);
    throw error;
  }
}

// 停止共享
function stop() {
if (state.stream) {
    state.stream.getTracks().forEach(track => track.stop());
    state.stream = null;
    state.isActive = false;
  }
}

// 自動清理資源
onUnmounted(() => {
  stop();
});

exportfunction useScreenCapture() {
return {
    state,
    start,
    stop
  };
}

3.2 組件集成示例

<template>
  <div class="screen-share">
    <video ref="videoEl" autoplay muted playsinline />
    
    <button @click="toggleShare" :disabled="!state.isSupported">
      {{ state.isActive ? '停止共享' : '開始共享' }}
    </button>
    
    <div v-if="state.error" class="error">
      {{ state.error.message }}
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted } from'vue';
import { useScreenCapture, useVideoBinding } from'./screen-capture';

const videoEl = ref(null);
const { state, start, stop } = useScreenCapture();

// 自動綁定視頻元素
useVideoBinding(videoEl);

const toggleShare = async () => {
if (state.isActive) {
    stop();
  } else {
    try {
      await start({
        video: {
          width: { ideal: 1920 },
          frameRate: { ideal: 30 }
        }
      });
    } catch (error) {
      console.error('共享失敗:', error);
    }
  }
};
</script>


責任編輯:武曉燕 來源: 前端之神
相關推薦

2025-06-17 09:21:13

2021-12-01 08:11:44

Vue3 插件Vue應用

2024-09-05 08:50:11

2021-11-30 08:19:43

Vue3 插件Vue應用

2023-11-28 09:03:59

Vue.jsJavaScript

2021-12-02 05:50:35

Vue3 插件Vue應用

2025-03-10 08:48:14

Vue生態編程

2020-09-19 21:15:26

Composition

2022-05-09 11:19:12

CSS函數開源

2021-12-08 09:09:33

Vue 3 Computed Vue2

2025-11-19 08:23:42

2025-10-17 07:10:00

前端開發Vue

2020-11-12 08:32:14

Vue3模板優化

2022-06-21 12:09:18

Vue差異

2024-06-06 09:39:58

2021-11-16 08:50:29

Vue3 插件Vue應用

2021-05-26 10:40:28

Vue3TypeScript前端

2022-03-10 11:04:04

Vue3Canvas前端

2020-12-01 08:34:31

Vue3組件實踐

2024-11-06 10:16:22

點贊
收藏

51CTO技術棧公眾號

日韩电影在线视频| 国产羞羞视频在线播放| 久久精品国产在热久久| 欧美成人午夜免费视在线看片| 久久久久中文字幕亚洲精品| 亚洲美女炮图| 1024精品合集| 精品久久久三级| 欧美高清69hd| 狠狠入ady亚洲精品| 亚洲少妇中文在线| 日本高清免费观看| 日韩免费va| 亚洲精品国产精华液| 麻豆成人在线播放| 超碰人人人人人人| 免费一级片91| 69久久夜色精品国产69| 真实乱视频国产免费观看| 精品国产18久久久久久二百| 色天使色偷偷av一区二区| 免费观看黄色大片| 久久成年人网站| 国产一区二区三区四区在线| 国产精品对白| 91精品婷婷国产综合久久性色 | 国产精品19p| 国产精成人品2018| 精品久久久久久电影| 少妇高潮大叫好爽喷水| eeuss影院www在线观看| 97se亚洲国产综合自在线观| 91理论片午午论夜理片久久| 在线观看亚洲黄色| 男人的天堂亚洲在线| 久久久久久香蕉网| 朝桐光av在线| 手机亚洲手机国产手机日韩| 亚洲天堂男人天堂女人天堂| av鲁丝一区鲁丝二区鲁丝三区| 欧美另类中文字幕| 欧美人xxxx| 青青草原国产在线视频| 日韩av一级| 在线观看日韩电影| 日本新janpanese乱熟| 国偷自产一区二区免费视频| 欧美日韩国产页| 免费av手机在线观看| 成人超碰在线| 亚洲高清免费一级二级三级| 日本一本中文字幕| 日韩一级av毛片| 欧洲一区二区三区| 一区二区三区成人| 污污污污污污www网站免费| 中文字幕伦理免费在线视频 | 九一国产精品视频| 女人天堂av在线播放| 亚洲午夜一区二区三区| 男人插女人视频在线观看| bl视频在线免费观看| 亚洲最新视频在线观看| 亚洲 欧美 日韩 国产综合 在线| 精精国产xxxx视频在线野外| 欧美性xxxxhd| 国产超碰在线播放| 先锋影音网一区二区| 6080日韩午夜伦伦午夜伦| 色婷婷综合在线观看| 一区二区三区四区精品视频 | 国产黄色三级网站| 亚洲涩涩av| 中文字幕av一区二区三区谷原希美| 正在播放国产对白害羞| 小说区亚洲自拍另类图片专区| 欧美日本高清一区| 成年人免费高清视频| 男人的j进女人的j一区| 91亚洲永久免费精品| 日批免费在线观看| 国产视频一区在线观看| 欧美三级午夜理伦三级老人| 午夜小视频福利在线观看| 亚洲成人资源在线| 手机看片福利日韩| 一区二区三区免费在线看| 亚洲免费一在线| 91视频青青草| 在线亚洲一区| 国产视频福利一区| 亚洲日本在线播放| 亚洲欧美在线高清| 18岁网站在线观看| 国产精久久一区二区| 日韩精品久久久久久久玫瑰园| 国产激情综合五月久久| 69夜色精品国产69乱| 在线日本高清免费不卡| 国产精品流白浆视频| 亚洲精品无码专区| 中文字幕欧美国产| 欧美日韩性生活片| 国产精品一区免费在线| 亚洲图片欧美日产| 国产亚洲欧美久久久久| 久久精品国产99国产| 精品一区二区久久久久久久网站| 麻豆网在线观看| www.爱爱.com| 国产亚洲欧美中文| 国产成人永久免费视频| 国外成人福利视频| 亚洲美女性视频| 久一视频在线观看| 激情文学综合插| 色综合久久久久综合99| 成人女保姆的销魂服务| 经典三级在线| 亚州成人在线电影| 黄色片子免费看| 欧美丝袜一区| 国产成人精品久久二区二区91| 亚洲成人av综合| 综合婷婷亚洲小说| 中文字幕免费高清在线| 国内精品视频在线观看| 日本韩国欧美精品大片卡二| 黄色片一区二区三区| 亚洲靠逼com| 色啦啦av综合| 98精品视频| 国产精品视频久久久久| www在线免费观看| 日本丰满少妇一区二区三区| 久久久久久久久免费看无码 | 97在线视频人妻无码| 国产午夜精品一区二区三区四区| 动漫av网站免费观看| 狠狠久久伊人| 国产69精品99久久久久久宅男| 成人h动漫精品一区二区无码| 亚洲免费在线电影| 国产精品探花在线播放| 91精品啪在线观看国产18| 成人观看高清在线观看免费| 蜜桃视频在线观看www社区| 欧美性猛交一区二区三区精品| 欧美人妻一区二区三区| 日本成人在线不卡视频| 亚洲综合第一| 国语精品视频| 欧美国产亚洲视频| 熟妇高潮一区二区三区| 欧美日韩免费在线观看| 熟女俱乐部一区二区| 日韩精品91亚洲二区在线观看| 色综合影院在线观看| 国产精品天堂蜜av在线播放 | 日韩精品最新在线观看| 国产精品久久久久久妇女| 日韩在线欧美在线国产在线| 国产一区二区波多野结衣| 亚洲人成精品久久久久| 91精品又粗又猛又爽| 亚洲人体偷拍| 欧美二级三级| 欧美成a人片免费观看久久五月天| 日韩在线视频网站| 性色av蜜臀av| 欧美性猛交xxxx久久久| 538精品视频| 国产乱淫av一区二区三区| 免费拍拍拍网站| 亚洲亚洲免费| 成人国产在线激情| xxxcom在线观看| 亚洲视频网站在线观看| 国产三级第一页| 精品欧美激情精品一区| 人妻熟人中文字幕一区二区| 国产精品影音先锋| 中文字幕无码精品亚洲35| 日韩大片在线| 国产日韩在线一区二区三区| 成人网ww555视频免费看| 欧美区二区三区| 都市激情在线视频| 欧美mv日韩mv国产网站app| 无码人妻丰满熟妇区bbbbxxxx| 日韩一区在线看| 欧美肉大捧一进一出免费视频| 奇米在线7777在线精品| 美女扒开大腿让男人桶| 日韩视频在线观看| 精品国产电影| 欧美在线在线| 国产精品高潮视频| av中文资源在线资源免费观看| 一区二区三区日韩在线| 1769国产精品| 亚洲高清精品视频| 欧美日韩中文字幕一区| 久久久午夜影院| 中文字幕日韩一区二区| 美女100%无挡| 国产性猛交xx乱| 国产一区二区在线观看免费| 久久国产成人精品国产成人亚洲| 天天做天天爱天天综合网2021| 蜜桃麻豆91| 136福利精品导航| 国产欧美日韩91| 都市激情亚洲一区| 久久久视频精品| 3d玉蒲团在线观看| 视频在线观看一区二区| 黄色小视频在线观看| 日韩国产激情在线| www.国产麻豆| 欧美久久久久久蜜桃| 日本一级一片免费视频| 91一区二区三区在线观看| 国产精品嫩草69影院| 久久99最新地址| 亚欧激情乱码久久久久久久久| 久久成人一区| 91视频最新入口| 99热这里只有精品8| 亚洲精品天堂成人片av在线播放| 国产精品久久久久久麻豆一区软件 | 欧美另类老女人| 麻豆网站在线免费观看| 日韩中文在线中文网三级| av在线女优影院| 在线观看日韩专区| 福利在线午夜| 国产一区二区三区日韩欧美| 国产在线观看免费网站| 亚洲女人被黑人巨大进入| 天堂中文在线8| 亚洲精品一区二三区不卡| 头脑特工队2在线播放| 日韩成人在线视频网站| 欧美一区二区少妇| 亚洲一区二区精品| www在线免费观看| 日韩在线视频观看| 中文字幕中文字幕在线中高清免费版| 欧美不卡视频一区发布| 俺来也官网欧美久久精品| 国内精品久久久久影院优| 2018日日夜夜| 激情久久免费视频| 波多野结衣成人在线| 一区二区日韩| 精品国产一区二区三区麻豆小说| 香蕉久久夜色精品国产更新时间| 久久久亚洲综合网站| 国产欧美日韩在线一区二区 | 天堂va欧美va亚洲va老司机| 国产999精品久久久久久| 亚洲精品国产成人av在线| 99精品国产视频| 夫妇交换中文字幕| 亚洲日韩欧美一区二区在线| 久一视频在线观看| 欧美视频一区二区三区…| 日韩xxx视频| 欧美日韩国产综合视频在线观看 | 亚洲精选中文字幕| 99青草视频在线播放视| 九九九久久久久久| 在线看片国产福利你懂的| 秋霞电影网一区二区| 男人揉女人奶房视频60分| 日日骚欧美日韩| 国产三级精品三级在线| 成人免费视频视频| www..com.cn蕾丝视频在线观看免费版| 国产精品美女一区二区| 久一区二区三区| 欧美在线观看你懂的| 99热这里只有精品3| 亚洲精品国精品久久99热一| 18视频免费网址在线观看| 久久久久成人网| av在线一区不卡| 翡翠波斯猫1977年美国| 久操精品在线| 青青草视频在线视频| 久久综合九色| 性生交大片免费看l| 久久精品免视看| 久艹视频在线观看| 欧美亚洲一区二区在线观看| 亚洲精品成人区在线观看| 一区二区欧美在线| 川上优av中文字幕一区二区| 国产美女91呻吟求| 精品在线观看入口| av在线免费观看国产| 免费观看30秒视频久久| 亚洲最大免费视频| 亚洲精品国产精品乱码不99| 中文天堂在线资源| 精品在线欧美视频| 999av小视频在线| 亚洲伊人第一页| 日韩中文欧美| 欧美 激情 在线| 成人国产亚洲欧美成人综合网| 国产白丝一区二区三区| 色哟哟精品一区| 婷婷在线观看视频| 久久99久国产精品黄毛片入口| 福利一区二区三区视频在线观看 | 午夜成人鲁丝片午夜精品| 久久中文精品视频| 国内欧美日韩| 亚洲高清视频一区二区| 久久裸体视频| 成人影视免费观看| 午夜精品福利一区二区三区av | 日本视频免费在线| 欧美videos中文字幕| 久cao在线| 成人福利网站在线观看11| 久久综合国产| 国产探花在线看| 国产精品久久久久久久久图文区| av首页在线观看| 亚洲无av在线中文字幕| 中文av在线全新| 玛丽玛丽电影原版免费观看1977| 亚洲美女视频在线免费观看| 亚洲精品无码一区二区| 亚洲主播在线播放| 国精品人妻无码一区二区三区喝尿| 欧美www在线| 超碰地址久久| 日本xxxxxxxxxx75| 97精品久久久久中文字幕| 日本一区二区网站| 日韩国产在线看| a欧美人片人妖| 秋霞毛片久久久久久久久| 青娱乐精品在线视频| 日韩一区二区三区四区视频| 欧美美女激情18p| 日本资源在线| 国内精品**久久毛片app| 亚洲一区日韩| av男人的天堂av| 欧美电影影音先锋| 亚洲妇熟xxxx妇色黄| 国产伦精品一区二区三区高清版 | 久久社区一区| 亚洲黄色av片| 一区二区三区四区亚洲| 亚洲欧美另类日韩| 奇门遁甲1982国语版免费观看高清| 免费看日本一区二区| 亚洲色图久久久| 亚洲免费资源在线播放| 亚洲国产精品欧美久久| 97在线精品国自产拍中文| 美女少妇全过程你懂的久久 | 九九热精品视频在线| 国产亚洲欧美aaaa| 国产精品毛片无码| 国产极品尤物在线| 国产精品素人视频| 亚洲精品久久久蜜桃动漫| 欧美综合第一页| 国产精品毛片久久| 水蜜桃av无码| 欧美日韩国产另类一区| 女子免费在线观看视频www| 欧美精品久久久| 国产揄拍国内精品对白| 青青操免费在线视频| 中文字幕日韩在线视频| www.久久东京| 我看黄色一级片| 亚洲图片欧美一区| av在线免费观看网站| 国内精品久久国产| 精品一区二区三区欧美| 国产成人在线免费观看视频| 色黄久久久久久| 清纯唯美亚洲经典中文字幕| 少妇一级淫免费播放| 五月激情综合色| 黄色在线论坛| 日本一区二区三区免费看| 福利电影一区二区| 91在线视频国产| 日韩av片永久免费网站| 精品9999|