最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用20行JS代碼實現(xiàn)屏幕錄制功能

 更新時間:2023年11月10日 08:27:48   作者:南城FE  
在開發(fā)中可能有遇到過屏幕錄制的需求,無論是教學(xué)、演示還是游戲錄制,都需要通過屏幕錄制來記錄和分享內(nèi)容,MediaRecorder?是一種強(qiáng)大的技術(shù),可以在瀏覽器端實現(xiàn)屏幕錄制功能,本文將介紹如何使用JS?MediaRecorder?實現(xiàn)屏幕錄制,需要的朋友可以參考下

代碼實現(xiàn)

要實現(xiàn)屏幕錄制,我們需要通過 navigator.mediaDevices.getDisplayMedia() 方法獲取屏幕媒體流,這個方法會彈出一個選擇窗口,讓用戶選擇要錄制的屏幕或窗口。但出于安全原因,發(fā)起錄制時必須確保用戶手勢觸發(fā)捕獲,例如點擊按鈕:

const button = document.createElement("button");
button.innerHTML = "capture";
document.body.append(button);
button.addEventListener("click", async () => {
  // TODO
});

點擊后,獲取視頻流并錄制,獲取到媒體流后,我們可以將其傳給 MediaRecorder 對象后開始屏幕錄制。

const stream = await navigator.mediaDevices.getDisplayMedia();
const recoder = new MediaRecorder(stream);
recoder.start();

當(dāng)用戶停止共享屏幕時停止錄制,調(diào)用 recoder.stop()即可停止錄制。

const [video] = stream.getVideoTracks();
video.addEventListener("ended", () => {
  recoder.stop();
});

監(jiān)聽recoderdataavailable事件獲取錄制文件并通過URL.createObjectURL()方法將其轉(zhuǎn)換為可下載的URL,供用戶下載錄制的視頻文件。

recoder.addEventListener("dataavailable", (evt) => {
  const a = document.createElement("a");
  a.href = URL.createObjectURL(evt.data);
  a.download = "capture.webm";
  a.click();
});

這樣一個簡單的屏幕記錄器就完成了,不到20行代碼就實現(xiàn)了整個屏幕錄制的核心功能。完整代碼如下:

button.addEventListener("click", async () => {
  const stream = await navigator.mediaDevices.getDisplayMedia();
  const recoder = new MediaRecorder(stream);
  recoder.start();

  const [video] = stream.getVideoTracks();
  video.addEventListener("ended", () => {
    recoder.stop();
  });

  recoder.addEventListener("dataavailable", (evt) => {
    const a = document.createElement("a");
    a.href = URL.createObjectURL(evt.data);
    a.download = "capture.webm";
    a.click();
  });
});

瀏覽器兼容

目前的瀏覽器支持情況,對于較低的版本需要升級才能使用。

實現(xiàn)這么強(qiáng)大的功能只需要這么少的代碼確實是很不錯的感覺,但是這只是一個簡單的錄制功能,實際開發(fā)中要考慮的因素相對會比較多,由于屏幕錄制可能消耗較多的資源,因此在長時間錄制時,我們應(yīng)該提示用戶錄制時間或大小的限制,并提供相應(yīng)的操作和反饋。

使用 MediaRecorder 我們可以方便地實現(xiàn)屏幕錄制功能。這種功能在教學(xué)、演示等場景下非常有用,同時也為開發(fā)者提供了更多創(chuàng)造性的可能性。有興趣的可以體驗使用看看效果,在實際使用中也要合理使用此功能,確保用戶隱私和數(shù)據(jù)安全。

以上就是使用20行JS代碼實現(xiàn)屏幕錄制功能的詳細(xì)內(nèi)容,更多關(guān)于JS屏幕錄制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

武威市| 永福县| 华坪县| 赤城县| 米林县| 确山县| 浦城县| 长白| 靖远县| 秀山| 屏山县| 报价| 庐江县| 延安市| 仁化县| 华亭县| 武川县| 浙江省| 沂水县| 石林| 庆元县| 孝昌县| 民和| 灵璧县| 福清市| 谷城县| 石河子市| 隆子县| 永康市| 福清市| 临泉县| 南陵县| 黑龙江省| 盱眙县| 淮北市| 大石桥市| 河曲县| 宽甸| 肥西县| 乌拉特前旗| 朝阳市|