使用WebRTC MediaRecorder录制跨平台(H.264?)视频

时间:2017-07-20 17:08:44

标签: google-chrome webrtc mp4 h.264 webm

我的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是否可以直接 跨平台容器格式来自任何平台?

1 个答案:

答案 0 :(得分:5)

您应该能够录制到webm / h.264

ls -Rla *

因此,您在WebM容器中拥有正确的跨平台视频格式(H.264)。

现在你可以尝试ffmpeg.js,只需将容器从WebM更改为mp4 - 处理H.264流 - 不需要转码(-vcodec copy)。

我在Chrome中记录到webm / h.264,但我没有尝试使用ffmpeg.js重新包装它。