0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

用JS实现简单的屏幕录像机

京东云 来源:京东保险 张洁 作者:京东保险 张洁 2024-10-09 15:27 次阅读

作者:京东保险 张洁

本文将介绍如何用JS实现简单的屏幕录像机。

一、录制准备

创建一个按钮

Start recording< /button >

书写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

    浏览量

    27749
  • JS
    JS
    +关注

    关注

    0

    文章

    78

    浏览量

    18033
收藏 人收藏

    评论

    相关推荐

    鸿蒙跨端实践-JS虚拟机架构实现

    类似的框架,我们需要自行实现以确保核心基础能力的完整。 鸿蒙虚拟的开发经历了从最初 ArkTs2V8 到 JSVM + Roma新架构方案 。在此过程中,我们实现了完整的鸿蒙版的“J2V8”和 基于系统JSVM的
    的头像 发表于 09-30 14:42 2193次阅读
    鸿蒙跨端实践-<b class='flag-5'>JS</b>虚拟机架构<b class='flag-5'>实现</b>

    公交车安全与监控:车载监控的应用与发展

    车载录像机可以把图像记录和保存下来的人类科技发展的产物;安防行业升华了这一项功能的含义,用在了安全防范中视频记录保存,把监控摄像接受的视频完好的保存下来,方便查阅,调用;车载录像机的性质也是如此
    的头像 发表于 08-05 10:17 304次阅读

    可编程振荡器替换SiTime应用于NVR(网络视频录像机

    可编程振荡器替换SiTime应用于NVR(网络视频录像机
    的头像 发表于 06-24 09:51 198次阅读
    可编程振荡器替换SiTime应用于NVR(网络视频<b class='flag-5'>录像机</b>)

    车载硬盘录像机:移动监控的新里程碑

    车载硬盘录像机的出现,不仅代表了安防科技在移动监控领域的最新成果,也预示着移动监控将朝着更加智能化、网络化、定制化的方向发展。随着技术的不断进步和应用领域的不断拓展,车载硬盘录像机必将在未来的移动监控领域发挥更加重要的作用。
    的头像 发表于 04-29 17:11 450次阅读
    车载硬盘<b class='flag-5'>录像机</b>:移动监控的新里程碑

    CYUSB3065通过DMA的方式来上传录像到电脑,请问如何暂停和启动录像

    的是 CYUSB3065,然后通过DMA的方式来上传录像到电脑,请问如何暂停和启动录像
    发表于 02-29 06:35

    监控录像机和交换机的作用区别

    监控录像机和交换机是现代安防系统中的核心设备,它们在维护公共秩序、保护人们财产安全、预防犯罪等方面发挥着重要作用。尽管这两种设备都在安防系统中扮演着重要角色,但它们的作用和功能却有很大的不同。在本文
    的头像 发表于 02-22 10:19 3630次阅读

    摄像头能被多少NVR同时添加?

    如果录像机的数量超过摄像的最大供流数量,例如5台录像机同时扫描添加了摄像,那就会造成摄像供流不足,出现“争抢”码流的情况,最后的现象就
    发表于 12-02 10:24 3240次阅读
    摄像头能被多少NVR同时添加?

    怎么js保存数据

    JS保存数据是Web开发中非常重要的一个功能,它能够将用户的输入或者其他数据存储在浏览器中,随后方便地读取和使用。在本文中,我们将讨论不同的数据保存方式以及如何使用JS在客户端中实现数据的保存
    的头像 发表于 11-27 16:10 897次阅读

    瑞芯微RK3588核心板在网络录像机产品中的应用与优势

    瑞芯微RK3588核心板在网络录像机产品中的应用与优势-迅为电子
    的头像 发表于 11-27 14:16 792次阅读
    瑞芯微RK3588核心板在网络<b class='flag-5'>录像机</b>产品中的应用与优势

    单片实现简单的LCD设计

    电子发烧友网站提供《单片实现简单的LCD设计.pdf》资料免费下载
    发表于 11-17 09:29 0次下载
    单片<b class='flag-5'>机</b><b class='flag-5'>实现</b>更<b class='flag-5'>简单</b>的LCD设计

    安防监控系统的储存怎么设置?

    安防监控系统的存储设置通常需要在监控设备(如摄像头、录像机、网络录像机(NVR)等)以及存储设备(如硬盘、云存储)上进行配置。下面,小编给大家详细介绍一下安防监控系统的储存怎么设置?以下是一般的设置步骤:
    的头像 发表于 11-03 17:27 4677次阅读

    AIWA D33录像机维修手册

    AIWA D33录像机维修手册
    发表于 11-03 15:18 0次下载

    松下NV-G30录像机常见故障检修实例

    松下NV—G30录像机常见故障检修实例
    发表于 11-03 15:16 2次下载

    爱华AIWA D33录像机维修手册

    爱华AIWA D33录像机维修手册
    发表于 10-30 15:16 0次下载

    Python调用JS的 4 种方式

    的 Python 实现 本文将聊聊利用 Python 调用 JS 的4种方式 2. 准备 以一段简单JS 脚本为例,将代码写入到文件中 //norm.
    的头像 发表于 10-30 09:41 628次阅读