一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

用JS實現(xiàn)簡單的屏幕錄像機

京東云 ? 來源:京東保險 張潔 ? 作者:京東保險 張潔 ? 2024-10-09 15:27 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:京東保險 張潔

本文將介紹如何用JS實現(xiàn)簡單的屏幕錄像機。

一、錄制準備

創(chuàng)建一個按鈕

Start recording

書寫JavaScript

var RECORDING_ONGOING = false;
var recordingToggle = document.getElementById("recording-toggle"); // 按鈕

recordingToggle.addEventListener("click", function(){
     RECORDING_ONGOING = !RECORDING_ONGOING; // 開始 / 停止 錄制
     if(RECORDING_ONGOING){
         recordingToggle.innerHTML = "Stop Recording";
         startRecording(); // 開始錄制
     } else {
         recordingToggle.innerHTML = "Start Recording";
         stopRecording(); // 停止錄制
 }
});

看起來內(nèi)容很多,但實際上,只是向按鈕添加一個事件偵聽器來開始和停止記錄并相應(yīng)地更改文本。

二、開始錄制

在寫功能函數(shù)之前,聲明 3 個全局變量(在函數(shù)之外)。

var blob, mediaRecorder = null;
var chunks = [];

現(xiàn)在,開始屏幕錄制

async function startRecording(){
     var stream = await navigator.mediaDevices.getDisplayMedia(
         {video: {mediaSource: "screen"}, audio: true}
     );

     deviceRecorder = new deviceRecorder(stream, {mimeType: "video/webm"});
}

在用戶屏幕之外創(chuàng)建媒體流。媒體記錄器有一個mimeType. 這是你想要的輸出文件類型。

可以mimeTypes 在此處閱讀更多相關(guān)信息。

Edge 支持video/webmmime 類型。這是文件擴展名.webm??梢酝ㄟ^以下方式檢查瀏覽器是否支持mimeType:

console.log(MediaRecorder.isTypeSupported("video/webm"))
console.log(MediaRecorder.isTypeSupported("video/mp4"))
console.log(MediaRecorder.isTypeSupported("video/mp4;codecs=avc1"))

向該函數(shù)添加幾行startRecording

 deviceRecorder.ondataavailable = (e) => {
     if(e.data.size > 0){
         chunks.push(e.data);
     }
 }
 deviceRecorder.onstop = () => {
     chunks = [];
 }
 deviceRecorder.start(250)

每當有數(shù)據(jù)時,都會將其添加到塊數(shù)組(之前定義)中。當停止錄制時,將調(diào)用該stopRecording() 函數(shù)。

三、停止錄制

function stopRecording(){
     var filename = window.prompt("File name", "video"); // Ask the file name

     deviceRecorder.stop(); // 停止錄制
     blob = new Blob(chunks, {type: "video/webm"})
     chunks = [] // 重置數(shù)據(jù)塊
     var dataDownloadUrl = URL.createObjectURL(blob);

     // 將其下載到用戶的設(shè)備上
     let a = document.createElement('a')
     a.href = dataDownloadUrl;
     a.download = `${filename}.webm`
     a.click()
 
     URL.revokeObjectURL(dataDownloadUrl)
}

用JS做錄屏就是這么簡單。如果你想要 mp4 或其他格式,則必須使用 API 進行轉(zhuǎn)換或自己進行轉(zhuǎn)換。

? 瀏覽器會通知是否正在共享屏幕

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 錄像機
    +關(guān)注

    關(guān)注

    1

    文章

    94

    瀏覽量

    28425
  • JS
    JS
    +關(guān)注

    關(guān)注

    0

    文章

    78

    瀏覽量

    18458
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    松下系列錄像機機械結(jié)構(gòu)原理檢修與實例

    松下系列錄像機機械結(jié)構(gòu)原理檢修與實例
    發(fā)表于 07-14 14:47 ?0次下載

    不同類型的UTP電纜的功能一樣嗎

    用于監(jiān)控安防系統(tǒng)中NVR(網(wǎng)絡(luò)錄像機)、DVR(數(shù)字錄像機)和HVR(混合錄像機)組件的音頻信號傳輸。 ● 非屏蔽雙絞線電纜廣泛用于水平和主干布線子系統(tǒng)。 ● UTP電纜用作以太網(wǎng)電纜和電話線,用于中短距離傳輸數(shù)據(jù)和音頻信號。
    的頭像 發(fā)表于 07-11 09:53 ?108次閱讀

    松下NV一G30錄像機常見故障檢修實例

    電子發(fā)燒友網(wǎng)站提供《松下NV一G30錄像機常見故障檢修實例.pdf》資料免費下載
    發(fā)表于 05-17 17:20 ?0次下載

    松下NV-G33型錄像機故障速修

    NV—G30、G33錄像機磁鼓不轉(zhuǎn)故障的檢修 2
    發(fā)表于 05-17 15:37 ?0次下載

    NV—G30錄像機電源電路原理與檢修

    NV—G30、G33錄像機磁鼓不轉(zhuǎn)故障的檢修
    發(fā)表于 05-17 15:34 ?1次下載

    AIWA JS215維修手冊

    電子發(fā)燒友網(wǎng)站提供《AIWA JS215維修手冊.pdf》資料免費下載
    發(fā)表于 04-01 16:44 ?2次下載

    GS1-N2:雙核心異構(gòu) AI 硬盤錄像機

    Firefly推出雙核心異構(gòu)AI硬盤錄像機GS1-N2,采用雙處理器架構(gòu),分別負責(zé)視頻解碼和AI處理,優(yōu)化資源分配,增強AI處理能力,支持最高8K視頻解碼。8個千兆網(wǎng)接口,可接駁符合ONVIF
    的頭像 發(fā)表于 03-21 16:52 ?565次閱讀
    GS1-N2:雙核心異構(gòu) AI 硬盤<b class='flag-5'>錄像機</b>

    NV-C2P10:雙核心異構(gòu) AI 硬盤錄像機

    Firefly推出雙核心異構(gòu)AI硬盤錄像機——NV-C2P10,采用雙處理器架構(gòu),分別負責(zé)視頻解碼和AI處理,優(yōu)化資源分配,增強AI處理能力,支持最高8K視頻解碼;具備8個千兆網(wǎng)接口,可接駁符合
    的頭像 發(fā)表于 03-19 16:32 ?531次閱讀
    NV-C2P10:雙核心異構(gòu) AI 硬盤<b class='flag-5'>錄像機</b>

    AWTK-WEB 快速入門(4) - JS Http 應(yīng)用程序

    導(dǎo)讀XMLHttpRequest改變了Web應(yīng)用程序與服務(wù)器交換數(shù)據(jù)的方式,fetch是其繼任者。本文介紹一下如何使用JS語言開發(fā)AWTK-WEB應(yīng)用程序,并用fetch訪問遠程數(shù)據(jù)。AWTKDesigner新建一個應(yīng)用程
    的頭像 發(fā)表于 01-22 11:31 ?439次閱讀
    AWTK-WEB 快速入門(4) - <b class='flag-5'>JS</b> Http 應(yīng)用程序

    一款支持USB攝像頭輸入錄像的高清錄播

    春源麗影4KR-05高清錄像機,不僅支持HDMI輸入進行4K高清錄制,還支持USB高清攝像頭輸入錄制!不僅可以錄制4K高清音視頻,還可以一鍵切為單獨錄音,可以錄制無損MP3音頻。支持一鍵錄制、暫停
    的頭像 發(fā)表于 12-24 16:01 ?973次閱讀
    一款支持USB攝像頭輸入<b class='flag-5'>錄像</b>的高清錄播<b class='flag-5'>機</b>

    AWTK-WEB 快速入門(2) - JS 應(yīng)用程序

    導(dǎo)讀AWTK可以使用相同的技術(shù)棧開發(fā)各種平臺的應(yīng)用程序。有時我們需要使用Web界面與設(shè)備進行交互,本文介紹一下如何使用JS語言開發(fā)AWTK-WEB應(yīng)用程序。AWTKDesigner新建一個應(yīng)用程序先安裝AWTKDesigner:
    的頭像 發(fā)表于 12-05 01:04 ?502次閱讀
    AWTK-WEB 快速入門(2) - <b class='flag-5'>JS</b> 應(yīng)用程序

    Node.js小科普和Node.js安裝常見管理工具

    Node.js是一個JavaScript的運行環(huán)境,用來執(zhí)行JavaScript代碼。 為什么會出現(xiàn)這么一個運行環(huán)境呢,從JavaScript研發(fā)初衷可以看出它是為了運行在瀏覽器中的,讓網(wǎng)頁交互更加
    的頭像 發(fā)表于 11-23 15:37 ?418次閱讀
    Node.<b class='flag-5'>js</b>小科普和Node.<b class='flag-5'>js</b>安裝常見管理工具

    鴻蒙跨端實踐-JS虛擬機架構(gòu)實現(xiàn)

    類似的框架,我們需要自行實現(xiàn)以確保核心基礎(chǔ)能力的完整。 鴻蒙虛擬的開發(fā)經(jīng)歷了從最初 ArkTs2V8 到 JSVM + Roma新架構(gòu)方案 。在此過程中,我們實現(xiàn)了完整的鴻蒙版的“J2V8”和 基于系統(tǒng)JSVM的
    的頭像 發(fā)表于 09-30 14:42 ?3003次閱讀
    鴻蒙跨端實踐-<b class='flag-5'>JS</b>虛擬機架構(gòu)<b class='flag-5'>實現(xiàn)</b>

    推薦一個支持js的嵌入式設(shè)備開發(fā)平臺

    可以通過vscode開發(fā)js,實時推送js代碼到設(shè)備里運行,無需編譯,支持屏幕,感興趣的可以看看 https://github.com/duoxianwulian/dxdop 提供很多js
    發(fā)表于 09-04 14:04

    公交車安全與監(jiān)控:車載監(jiān)控的應(yīng)用與發(fā)展

    車載錄像機可以把圖像記錄和保存下來的人類科技發(fā)展的產(chǎn)物;安防行業(yè)升華了這一項功能的含義,用在了安全防范中視頻記錄保存,把監(jiān)控攝像接受的視頻完好的保存下來,方便查閱,調(diào)用;車載錄像機的性質(zhì)也是如此
    的頭像 發(fā)表于 08-05 10:17 ?827次閱讀