JavaScript可通过MediaRecorder API配合getDisplayMedia()实现浏览器内屏幕录制,需用户授权且仅限HTTPS或localhost安全上下文,须在用户手势触发下调用,支持Chrome、Edge、Firefox,Safari暂不支持。

JavaScript 本身不能直接录制屏幕,但可以通过 MediaRecorder API 配合 getDisplayMedia() 获取屏幕流,实现浏览器内的屏幕录制。这个功能需要用户主动授权,且仅在安全上下文(https 或 localhost)中可用。
调用 navigator.mediaDevices.getDisplayMedia() 请求用户选择要共享的屏幕、窗口或标签页。它返回一个 Promise,成功后得到一个 MediaStream 对象:
{ video: true, audio: false }(屏幕录制通常不捕获系统音频,Chrome 目前不支持系统音频捕获)audio: true 并选择带声音的源)拿到 stream 后,用它初始化 MediaRecorder 实例:
const recorder = new MediaRecorder(stream);dataavailable 事件,该事件在每次生成录像片段(Blob)时触发recorder.start() 开始录制;可传毫秒值指定分段时长(如 recorder.start(1000) 每秒触发一次 dataavailable)recorder.state 查看当前状态("inactive" / "recording" / "paused")在 dataavailable 事件中收集 Blob,并在停止后合并为完整视频文件:
立即学习“Java免费学习笔记(深入)”;
let chunks = [];,在 dataavailable 中执行 chunks.push(event.data);
stop 事件,用 new Blob(chunks, { type: 'video/webm' }) 合并(注意 MIME 类型需与实际录制格式一致,常见为 video/webm)const url = URL.createObjectURL(blob);,再用 <a href="%24%7Burl%7D" download="screen-recording.webm"></a> 下载URL.revokeObjectURL(url) 释放内存实际使用中需关注以下几点:
getDisplayMedia
recorder.stop() 或 stream.getTracks().forEach(t => t.stop()) 清理资源基本上就这些。不复杂但容易忽略权限和上下文限制,动手前先确保是 https 环境并由用户点击触发。
以上就是javascript怎样进行屏幕录制?_javascript的MediaRecorder API如何使用?的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号