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

SB2*_*055 9 mp4 google-chrome h.264 webm webrtc

我的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;
}
Run Code Online (Sandbox Code Playgroud)

显然,这仅适用于iOS Safari或MacOS不支持的webm.我试图避免加倍存储并引入编码复杂性.Chrome上的MediaRecorder是否可以任何平台直接录制跨平台容器格式?

Mar*_*ann 6

你应该能够记录到webm/h.264

var options = {mimeType: 'video/webm;codecs=h264'};

media_recorder = new MediaRecorder(stream, options);
Run Code Online (Sandbox Code Playgroud)

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

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

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