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

    文章

    94

    浏览量

    28714
  • JS
    JS
    +关注

    关注

    0

    文章

    79

    浏览量

    18807
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    GPIOB模拟spi的方法及lcd屏幕的接入

    越高,数据传输速率越快。由于spi接口较为简单,同时《RISC-V架构与嵌入式开发快速入门》书中也详细介绍过,在此原理部分介绍从略。 二、spi接口及lcd主要代码实现 lcd所需的GPIOB的配置
    发表于 10-30 07:59

    SGTools--动画控件--屏幕实现动画显示 就是这么简单

    详细步骤可以观看视频, 实现动画很简单,提前准备好gif文件和一个张背景图 使用SGTools工具,就可以制作动画界面啦 视频中屏幕型号是7寸 HMT070ATA-9C
    发表于 09-16 10:29

    蓝牙串口模块技术在NVR(网络视频录像机)中的应用方案

    随着智能安防系统的快速发展,网络视频录像机(NVR)作为核心设备之一,承担着视频采集、存储、回放、管理等关键功能。为了进一步提升NVR的易用性与智能化程度,蓝牙无线通信技术正在成为新的集成方向。本文
    的头像 发表于 07-29 10:07 404次阅读
    蓝牙串口模块技术在NVR(网络视频<b class='flag-5'>录像机</b>)中的应用方案

    松下系列录像机机械结构原理检修与实例

    松下系列录像机机械结构原理检修与实例
    发表于 07-14 14:47 1次下载

    不同类型的UTP电缆的功能一样吗

    用于监控安防系统中NVR(网络录像机)、DVR(数字录像机)和HVR(混合录像机)组件的音频信号传输。 ● 非屏蔽双绞线电缆广泛用于水平和主干布线子系统。 ● UTP电缆用作以太网电缆和电话线,用于中短距离传输数据和音频信号。
    的头像 发表于 07-11 09:53 464次阅读

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

    电子发烧友网站提供《松下NV一G30录像机常见故障检修实例.pdf》资料免费下载
    发表于 05-17 17:20 0次下载

    松下NV-G33型录像机故障速修

    NV—G30、G33录像机磁鼓不转故障的检修 2
    发表于 05-17 15:37 0次下载

    NV—G30录像机电源电路原理与检修

    NV—G30、G33录像机磁鼓不转故障的检修
    发表于 05-17 15:34 1次下载

    AIWA HS-JS415维修手册

    电子发烧友网站提供《AIWA HS-JS415维修手册.pdf》资料免费下载
    发表于 04-08 10:37 3次下载

    AIWA JS215维修手册

    电子发烧友网站提供《AIWA JS215维修手册.pdf》资料免费下载
    发表于 04-01 16:44 3次下载

    GS1-N2:双核心异构 AI 硬盘录像机

    Firefly推出双核心异构AI硬盘录像机GS1-N2,采用双处理器架构,分别负责视频解码和AI处理,优化资源分配,增强AI处理能力,支持最高8K视频解码。8个千兆网接口,可接驳符合ONVIF
    的头像 发表于 03-21 16:52 977次阅读
    GS1-N2:双核心异构 AI 硬盘<b class='flag-5'>录像机</b>

    NV-C2P10:双核心异构 AI 硬盘录像机

    Firefly推出双核心异构AI硬盘录像机——NV-C2P10,采用双处理器架构,分别负责视频解码和AI处理,优化资源分配,增强AI处理能力,支持最高8K视频解码;具备8个千兆网接口,可接驳符合
    的头像 发表于 03-19 16:32 870次阅读
    NV-C2P10:双核心异构 AI 硬盘<b class='flag-5'>录像机</b>

    FPGA直接驱动DLP4710LC实现简单的功能,可以实现吗?

    您好,我购买了DLP4710EVM-LC开发套件,我需要用DLP4710LC自己开发实现一个最简单的功能,能投影出一张图片即可,我没有买对应的控制器,想用FPGA去实现此功能,我的思路是上位
    发表于 02-20 08:02

    AWTK-WEB 快速入门(4) - JS Http 应用程序

    导读XMLHttpRequest改变了Web应用程序与服务器交换数据的方式,fetch是其继任者。本文介绍一下如何使用JS语言开发AWTK-WEB应用程序,并用fetch访问远程数据。AWTKDesigner新建一个应用程
    的头像 发表于 01-22 11:31 731次阅读
    AWTK-WEB 快速入门(4) - <b class='flag-5'>JS</b> Http 应用程序

    一款支持USB摄像头输入录像的高清录播

    春源丽影4KR-05高清录像机,不仅支持HDMI输入进行4K高清录制,还支持USB高清摄像头输入录制!不仅可以录制4K高清音视频,还可以一键切为单独录音,可以录制无损MP3音频。支持一键录制、暂停
    的头像 发表于 12-24 16:01 1763次阅读
    一款支持USB摄像头输入<b class='flag-5'>录像</b>的高清录播<b class='flag-5'>机</b>