0

我正在使用MediaSource扩展程序播放视频。但是,MediaSource 仅支持分段的 MP4 视频。

如何在 JavaScript 中将非分段 MP4 视频转换为分段 MP4 视频,以便我可以MediaSource用来播放视频?

MP4Box 对非分段视频的isFragmented布尔返回:false

blob.arrayBuffer().then((videoBuffer => {
    mp4boxfile.onReady = function (info) {
        const isFragmented = info.isFragmented;
        if (!isFragmented) {
            //Need to reencode video into a fragmented video here
        }
    }

//...

    const chunkSize = Math.ceil(videoBuffer.byteLength / 80000);
    let start = 0;
    let currentEnd = 80000;
    let videoBufferChunk;

    for (let i = 0; i < chunkSize; i++) {
        videoBufferChunk = videoBuffer.slice(start, currentEnd);

        videoBufferChunk.fileStart = start;
        start = mp4boxfile.appendBuffer(videoBufferChunk);
        currentEnd = start + 80000;
        mp4boxfile.flush();
    }
//...
}

如何使用 JavaScript 将 MP4 视频重新编码为片段?

4

1 回答 1

2

您可以使用ffmpeg.wasm,它基本上是浏览器的 ffmpeg,但具有本机性能。如果我理解正确的话,这样你就可以将碎片整合到你想要做的前端。

ffmpeg.wasm

恐怕我无法帮助您处理使用 ffmpeg 的实际碎片部分,但这篇文章讨论的是普通 ffmpeg。

于 2021-01-14T22:42:41.153 回答