使用 MediaRecorder 以 MP4 格式从网络摄像头录制视频

Recording video from webcam in MP4 format with MediaRecorder

当我在支持 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 记录有效。

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

因为是GNU/Linux,为了加快转换我用了:

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

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