前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >简单的学习下 JavaScript 录屏API

简单的学习下 JavaScript 录屏API

作者头像
前端达人
发布2023-08-31 08:51:41
2260
发布2023-08-31 08:51:41
举报
文章被收录于专栏:前端达人
学习如何使用这个简单易用的API进行屏幕共享、屏幕录制等操作。尽管需要对JavaScript有一定的了解,但我相信你已经具备了这方面的知识。

1、开始录制

让我们创建一个按钮:

代码语言:javascript
复制
<button id="recording-toggle">Start recording</button>

JavaScript 代码

代码语言:javascript
复制
var RECORDING_ONGOING = false;
var recordingToggle = document.getElementById("recording-toggle"); // The button

recordingToggle.addEventListener("click", function(){
    RECORDING_ONGOING = !RECORDING_ONGOING; // Start / Stop recording
    if(RECORDING_ONGOING){
        recordingToggle.innerHTML = "Stop Recording";
        startRecording(); // Start the recording
    } else {
        recordingToggle.innerHTML = "Start Recording";
        stopRecording(); // Stop screen recording
    }
});

看起来这里似乎有很多内容,但实际上,我们只是在按钮上添加了一个事件监听器,以便启动和停止录制,并相应地更改文本。

编写录制核心代码

在函数之前,声明3个全局变量(在函数外部)。

代码语言:javascript
复制
var blob, mediaRecorder = null;
var chunks = [];

现在,让我们开始屏幕录制。

代码语言:javascript
复制
async function startRecording(){
    var stream =  await navigator.mediaDevices.getDisplayMedia(
      {video: {mediaSource: "screen"}, audio: true}
    );

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

我们从用户的屏幕创建一个媒体流。媒体记录器有一个 mimeType,它是您所希望的输出文件的类型。

您可以在这里阅读更多关于 mimeType 的信息。

Edge 浏览器支持 video/webm mimeType。该文件扩展名为 .webm。您可以使用以下方式检查浏览器是否支持某个 mimeType:

代码语言:javascript
复制
console.log(MediaRecorder.isTypeSupported("video/webm"))
console.log(MediaRecorder.isTypeSupported("video/mp4"))
console.log(MediaRecorder.isTypeSupported("video/mp4;codecs=avc1"))

在这篇文章中,我将使用 Webm,但您可以根据需要更改 mimeType。

在 startRecording 函数中添加几行代码:

代码语言:javascript
复制
    deviceRecorder.ondataavailable = (e) => {
        if(e.data.size > 0){
             chunks.push(e.data);
        }
    }
    deviceRecorder.onstop = () => {
        chunks = [];
    }
    deviceRecorder.start(250)

每当我们有数据时,我们将其添加到之前定义的 chunks 数组中。当我们停止录制时,我们将调用 stopRecording() 函数。

停止录制

代码语言:javascript
复制
function stopRecording(){
    var filename = window.prompt("File name", "video"); // Ask the file name

    deviceRecorder.stop(); // Stopping the recording
    blob = new Blob(chunks, {type: "video/webm"})
    chunks = [] // Resetting the data chunks
    var dataDownloadUrl = URL.createObjectURL(blob);

    // Downloadin it onto the user's device
    let a = document.createElement('a')
    a.href = dataDownloadUrl;
    a.download = `${filename}.webm`
    a.click()
    
    URL.revokeObjectURL(dataDownloadUrl)
}

这就是在 JavaScript 中进行屏幕录制的简单方法。如果您想要使用 mp4 或其他格式,您将需要使用 API 进行转换或自行处理。

结束

在本文中,我们介绍了使用 JavaScript 进行屏幕录制的简单方法。通过使用浏览器提供的媒体记录器 API,我们可以轻松地捕捉用户屏幕的内容并创建录屏文件。无论是进行教学演示、演讲稿录制还是创建应用程序演示视频,屏幕录制都是一个非常有用的工具。您可以根据需要选择不同的输出文件类型,并根据自己的需求进行扩展和定制。我希望本文对您理解和使用 JavaScript 的录屏 API 有所帮助。

谢谢您阅读本文,如果您对其他 JavaScript API 和功能感兴趣,请继续关注我的系列文章。在接下来的文章中,我将继续介绍更多有趣和实用的内容,如通知、浏览器历史记录以及音频和视频录制等。请留意我的更新,获取最新的技术资讯和教程。

希望您喜欢这篇文章,如果您有任何问题或意见,请随时与我联系。再次感谢您的阅读!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 前端达人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、开始录制
  • 编写录制核心代码
  • 停止录制
  • 结束
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档