![使用 FFMpeg 交换 MP4 文件的索引](https://linux22.com/image/1433602/%E4%BD%BF%E7%94%A8%20FFMpeg%20%E4%BA%A4%E6%8D%A2%20MP4%20%E6%96%87%E4%BB%B6%E7%9A%84%E7%B4%A2%E5%BC%95.png)
我运行了一个提供一些视频的 Web 应用程序。这些视频通过 Flash 视频播放器播放。
不幸的是,这些容器文件的索引位于文件的末尾,因此必须加载整个 2GB 的视频才能开始播放。
问:有没有办法使用 FFMpeg 将 MP4 容器索引交换到文件的前面?
答案1
您想将 moov 原子移至开头。编码时您可以使用:
ffmpeg -i inputfile [其他参数] -movflags +faststart outputfile.mp4
如果它们已经被编码,您可以简单地复制流而无需重新编码:
ffmpeg -i 输入.mp4 -codec copy -map 0 -movflags +faststart 输出.mp4
你也可以使用 qt-fasstart 工具。这个需要在 ffmpeg 的 tools 目录中编译。命令很简单:
qt-faststart 输入文件.mp4 输出文件.mp4
有可用的 Windows 二进制文件。