使用 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
如果有更快的方法,我想知道它们。
当我在支持 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
如果有更快的方法,我想知道它们。