衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

用JS實現簡單的屏幕錄像機

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

作者:京東保險 張潔

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

一、錄制準備

創建一個按鈕

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(); // 停止錄制
 }
});

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

二、開始錄制

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

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

現在,開始屏幕錄制

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

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

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

可以mimeTypes 在此處閱讀更多相關信息

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"))

向該函數添加幾行startRecording

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

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

三、停止錄制

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

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

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

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

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

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 錄像機
    +關注

    關注

    1

    文章

    89

    瀏覽量

    28021
  • JS
    JS
    +關注

    關注

    0

    文章

    78

    瀏覽量

    18177
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

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

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

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

    aic3104adc 錄像白躁音很大 adc 高通濾波有效嗎示波器量過時鐘 mclk 12.288 mhz;wclk 48000 khz ;bclk1.536mhz adc 增益調小 采集 的聲音也會變小請問 aic310
    發表于 10-16 06:11

    鴻蒙跨端實踐-JS虛擬機架構實現

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

    聚徽-影響 LED 屏幕清晰度的因素有哪些

    ,?LED 屏幕可以顯示文字、? 圖形、? 圖像、? 動畫、? 行情、? 視頻、? 錄像信號等各種信息。? 影響 LED 屏幕清晰度的因素主要包括以下幾點:?
    的頭像 發表于 09-23 09:59 ?364次閱讀

    推薦一個支持js的嵌入式設備開發平臺

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

    公交車安全與監控:車載監控的應用與發展

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

    可編程振蕩器替換SiTime應用于NVR(網絡視頻錄像機

    可編程振蕩器替換SiTime應用于NVR(網絡視頻錄像機
    的頭像 發表于 06-24 09:51 ?337次閱讀
    可編程振蕩器替換SiTime應用于NVR(網絡視頻<b class='flag-5'>錄像機</b>)

    車載硬盤錄像機:移動監控的新里程碑

    車載硬盤錄像機的出現,不僅代表了安防科技在移動監控領域的最新成果,也預示著移動監控將朝著更加智能化、網絡化、定制化的方向發展。隨著技術的不斷進步和應用領域的不斷拓展,車載硬盤錄像機必將在未來的移動監控領域發揮更加重要的作用。
    的頭像 發表于 04-29 17:11 ?667次閱讀
    車載硬盤<b class='flag-5'>錄像機</b>:移動監控的新里程碑

    請問大伙labview調用海康錄像機無法回放的問題

    我調用了海康的庫函數,運行起來沒報錯,返回值是0,但是無法正常顯示回放畫面
    發表于 04-22 20:28

    淺談S-VIDEO接口靜電浪涌防護

    淺談S-VIDEO接口靜電浪涌防護S-Video接口曾經在一些舊款的電視錄像機、游戲等設備上廣泛應用,用于傳輸視頻信號。不過,隨著技術的發展,S-Video接口已經逐漸被其他更先進的接口所取
    的頭像 發表于 03-07 08:02 ?823次閱讀
    淺談S-VIDEO接口靜電浪涌防護

    CYUSB3065通過DMA的方式來上傳錄像到電腦,請問如何暫停和啟動錄像

    的是 CYUSB3065,然后通過DMA的方式來上傳錄像到電腦,請問如何暫停和啟動錄像
    發表于 02-29 06:35

    監控錄像機和交換機的作用區別

    監控錄像機和交換機是現代安防系統中的核心設備,它們在維護公共秩序、保護人們財產安全、預防犯罪等方面發揮著重要作用。盡管這兩種設備都在安防系統中扮演著重要角色,但它們的作用和功能卻有很大的不同。在本文
    的頭像 發表于 02-22 10:19 ?5288次閱讀
    免费百家乐分析工具| 华商棋牌游戏| 明光市| 属蛇和属猪做生意| 水果机的规律| 澳门百家乐官网备用网址| 凤凰百家乐娱乐城| 亿酷棋牌世界官网| 百家乐官网羸钱法| 大都会百家乐的玩法技巧和规则| 在线百家乐官网大家赢| 百家乐台布兄弟| 皇冠国际现金投注网| 百家乐官网网页游戏| 大发888手机版下载安装到手| 百家乐官网博彩通博彩网皇冠网澳门赌场真人赌博 | 浙江省| 澳门百家乐国际| 天全县| 百家乐路单破解软件| 瑞发国际| 怎样玩百家乐赢钱| 皇冠赌球网| 百家乐扑克投注赢钱法| 广东百家乐桌布| 百家乐官网游戏玩法技巧| 百家乐赌场现金网| 百家乐官网百家乐官网视频| 百家乐英皇娱乐场| 鲨鱼百家乐官网游戏平台| 在线百家乐作| 金博士百家乐官网娱乐城 | 百家乐怎么看门路| 郓城县| 网络百家乐必胜投注方法| 网上百家乐官网分析软件| 威尼斯人娱乐城送彩金| 网上百家乐官网赌法| 大发888娱乐城真钱lm0| 旧金山百家乐官网的玩法技巧和规则| 澳客网比分直播|