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

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

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

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

京東云 ? 來源:京東保險(xiǎn) 張潔 ? 作者:京東保險(xiǎn) 張潔 ? 2024-10-09 15:27 ? 次閱讀

作者:京東保險(xiǎn) 張潔

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

一、錄制準(zhǔn)備

創(chuàng)建一個(gè)按鈕

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)容很多,但實(shí)際上,只是向按鈕添加一個(gè)事件偵聽器來開始和停止記錄并相應(yīng)地更改文本。

二、開始錄制

在寫功能函數(shù)之前,聲明 3 個(gè)全局變量(在函數(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)建媒體流。媒體記錄器有一個(gè)mimeType. 這是你想要的輸出文件類型。

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

Edge 支持video/webmmime 類型。這是文件擴(kuò)展名.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)

每當(dāng)有數(shù)據(jù)時(shí),都會(huì)將其添加到塊數(shù)組(之前定義)中。當(dāng)停止錄制時(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 進(jìn)行轉(zhuǎn)換或自己進(jìn)行轉(zhuǎn)換。

? 瀏覽器會(huì)通知是否正在共享屏幕

審核編輯 黃宇

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

    關(guān)注

    1

    文章

    93

    瀏覽量

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

    關(guān)注

    0

    文章

    78

    瀏覽量

    18410
收藏 0人收藏

    評(píng)論

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

    松下NV一G30錄像機(jī)常見故障檢修實(shí)例

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

    松下NV-G33型錄像機(jī)故障速修

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

    NV—G30錄像機(jī)電源電路原理與檢修

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

    AIWA JS215維修手冊(cè)

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

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

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

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

    Firefly推出雙核心異構(gòu)AI硬盤錄像機(jī)——NV-C2P10,采用雙處理器架構(gòu),分別負(fù)責(zé)視頻解碼和AI處理,優(yōu)化資源分配,增強(qiáng)AI處理能力,支持最高8K視頻解碼;具備8個(gè)千兆網(wǎng)接口,可接駁符合
    的頭像 發(fā)表于 03-19 16:32 ?478次閱讀
    NV-C2P10:雙核心異構(gòu) AI 硬盤<b class='flag-5'>錄像機(jī)</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訪問遠(yuǎn)程數(shù)據(jù)。AWTKDesigner新建一個(gè)應(yīng)用程
    的頭像 發(fā)表于 01-22 11:31 ?398次閱讀
    AWTK-WEB 快速入門(4) - <b class='flag-5'>JS</b> Http 應(yīng)用程序

    一款支持USB攝像頭輸入錄像的高清錄播機(jī)

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

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

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

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

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

    aic3104 adc錄像白躁音很大怎么解決?

    aic3104adc 錄像白躁音很大 adc 高通濾波有效嗎示波器量過時(shí)鐘 mclk 12.288 mhz;wclk 48000 khz ;bclk1.536mhz adc 增益調(diào)小 采集 的聲音也會(huì)變小請(qǐng)問 aic310
    發(fā)表于 10-16 06:11

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

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

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

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

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

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

    可編程振蕩器替換SiTime應(yīng)用于NVR(網(wǎng)絡(luò)視頻錄像機(jī)

    可編程振蕩器替換SiTime應(yīng)用于NVR(網(wǎng)絡(luò)視頻錄像機(jī)
    的頭像 發(fā)表于 06-24 09:51 ?554次閱讀
    可編程振蕩器替換SiTime應(yīng)用于NVR(網(wǎng)絡(luò)視頻<b class='flag-5'>錄像機(jī)</b>)

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品