25

我看到很多关于将moov原子从 MP4 视频容器的末尾重新定位到开头的问题,以使视频“网络优化”或更容易流式传输。似乎大多数工具在第一次编码视频时都需要一个明确的选项来执行此操作,如果它完全可用的话。

如果将原子放在开头可以使流媒体工作更好,并且事后这样做的成本很高,那么我为什么要在结尾处使用原子对视频进行编码呢?有什么好处?

4

2 回答 2

24

在文件末尾编码 MOOV 通常是视频编码器的默认操作,因为它们倾向于通过一次性写入输出文件来操作,而 MOOV atom 的确切内容和大小只有在写入音频后才能知道和视频数据,因为它包含绝对文件大小。

FFmpeg 允许您进行第二次传递并将原子移动到开头-movflags +faststart

在末尾添加 MOOV atom 并没有什么特别的好处,只是在本地播放情况下并不那么不方便,因为在播放前在文件结尾处查找并不像渐进式下载交付那样昂贵。

于 2013-03-27T12:42:05.253 回答
6

您总是希望将索引信息放在文件的开头,除了唯一的一个之外,此布局没有任何隐藏成本:在进行捕获/转码时,您可能无法提前知道该 MOOV 需要多少空间atom 开始时,它的数据也还不是很好。因此,您通常将有效负载直接写入文件,然后他们通过添加 MOOV 并更新文件的其余部分来完成写入。

于 2013-03-27T12:38:46.770 回答