javascript - 用javascript屏幕录制覆盖面部然后保存?
问题描述
我正在用 JavaScript 制作屏幕录像机。我从https://dev.to/sebastianstamm/screen-recording-in-10-lines-of-vanilla-js-3bo8获得了到目前为止的代码。
有没有办法录下人脸,然后把用户人脸的视频和录屏重叠起来,保存在.webm文件中?我发现的帖子的完整代码是这样的:
const start = document.getElementById("start");
const stop = document.getElementById("stop");
const video = document.querySelector("video");
let recorder, stream;
async function startRecording() {
stream = await navigator.mediaDevices.getDisplayMedia({
video: { mediaSource: "screen" }
});
recorder = new MediaRecorder(stream);
const chunks = [];
recorder.ondataavailable = e => chunks.push(e.data);
recorder.onstop = e => {
const completeBlob = new Blob(chunks, { type: chunks[0].type });
video.src = URL.createObjectURL(completeBlob);
};
recorder.start();
}
start.addEventListener("click", () => {
start.setAttribute("disabled", true);
stop.removeAttribute("disabled");
startRecording();
});
stop.addEventListener("click", () => {
stop.setAttribute("disabled", true);
start.removeAttribute("disabled");
recorder.stop();
stream.getVideoTracks()[0].stop();
});
和 HTML:
<button id="start">
Start Recording
</button>
<button id="stop" disabled>
Stop Recording
</button>
<video autoplay />
解决方案
推荐阅读
- php - 循环遍历数组中的数组
- java - 每当我尝试打开通知快门时,布局总是会波动,或者你能参考一些博客吗
- python - 如何根据虚拟变量转换新数据集以进行验证
- c# - 自定义列宽与openxml C#中的相同值不匹配
- laravel - Laravel 获取所有复选框,包括从带有附加列的数据透视表中选中
- python - 如何正确排序文件列表?
- node.js - 如何修复尝试在 mac 上安装 ionic@3.20.0 的 Vscode 错误
- python - Jax 矢量化:vmap 和/或 numpy.vectorize?
- javascript - 模态背景在 laravel 刀片的纵向屏幕方向上阻止模态内容
- ruby-on-rails - Rails:创建动态路由、控制器