将非分段mp4重新编码为分段mp4



我正在使用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视频重新编码为碎片视频?

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

ffmpeg.wasm

恐怕我不能帮助你使用ffmpeg的实际碎片部分,但这篇文章讨论了普通的ffmpeg。

相关内容

  • 没有找到相关文章

最新更新