首页 > 解决方案 > 使用 MediaRecorder 以 MP4 格式从网络摄像头录制视频

问题描述

当我在支持 MP4 和 MediaRecorder(Linux 上的 Firefox)的浏览器中使用 JS MediaRecorder 以 MP4 格式录制网络摄像头时,网络摄像头启动但不记录。

当 MediaRecorder 的 mimeType 设置为时录制已经工作,video/webm但是当我将 mimeType设置为时video/mp4出现问题。

我用以下代码记录:

if (navigator.mediaDevices) {
        var constraints = {audio: true, video: true};
        navigator.mediaDevices.getUserMedia(constraints).then(function (stream) {
            mediaRecorder = new MediaRecorder(stream, {mimeType: "video/mp4"});
            mediaRecorder.start();
});
} else {
console.log("media recorder is not supported");
}

我希望网络摄像头在支持的浏览器中执行代码时开始录制,但是console.log没有输出,并且在控制台中出现以下错误:

NotSupportedError: Operation is not supported

我知道我的浏览器同时支持 mp4 和 MediaRecorder:

MP4:https: //caniuse.com/#search=mp4 媒体记录器:https ://caniuse.com/#search=mediarecorder

但只有 webm 录音有效。

标签: javascriptvideowebcammp4web-mediarecorder

解决方案


我发现 Chromium 也不支持 mp4 录制,所以我决定在视频上传后在服务器端进行转换。

由于它是 GNU/Linux,为了加快我使用的转换速度:

ffmpeg -i input.webm -preset superfast output.mp4

如果有更快的方法,我想知道它们。


推荐阅读