我的MediaRecorder实现指定了以下内容:
const getMediaRecorderOptions = function () {
var options = { mimeType: "video/webm;codecs=vp8" }; // 9 was lagggy, cpu-intensive
if (!MediaRecorder.isTypeSupported(options.mimeType)) {
logger.recorderLog(options.mimeType + " is not Supported");
options = { mimeType: "video/webm;codecs=vp8" };
if (!MediaRecorder.isTypeSupported(options.mimeType)) {
logger.recorderLog(options.mimeType + " is not Supported");
options = { mimeType: "video/webm" };
if (!MediaRecorder.isTypeSupported(options.mimeType)) {
logger.recorderLog(options.mimeType + " is not Supported");
options = { mimeType: "" };
}
}
}
return options;
}
显然,这仅适用于iOS OS或MacOS不支持的 webm 。我试图避免加倍存储并引入编码复杂性。 Chrome上的MediaRecorder是否可以直接 跨平台容器格式来自任何平台?
答案 0 :(得分:5)
您应该能够录制到webm / h.264
ls -Rla *
因此,您在WebM容器中拥有正确的跨平台视频格式(H.264)。
现在你可以尝试ffmpeg.js,只需将容器从WebM更改为mp4 - 处理H.264流 - 不需要转码(-vcodec copy)。
我在Chrome中记录到webm / h.264,但我没有尝试使用ffmpeg.js重新包装它。