我看到很多关于将MP4视频容器的moov
原子从结尾移动到开头以使视频“网页优化”或更易于流传播的问题。似乎大多数工具要求在首次编码视频时明确选择此选项(如果有的话)。
如果将该原子放在开头可以使流媒体效果更好,并且事后重新处理成本高昂,为什么我要将原子放在末尾进行视频编码?这有什么好处吗?
我看到很多关于将MP4视频容器的moov
原子从结尾移动到开头以使视频“网页优化”或更易于流传播的问题。似乎大多数工具要求在首次编码视频时明确选择此选项(如果有的话)。
如果将该原子放在开头可以使流媒体效果更好,并且事后重新处理成本高昂,为什么我要将原子放在末尾进行视频编码?这有什么好处吗?
在视频编码器中,将 MOOV 编码到文件结尾通常是默认操作,因为它们往往通过单遍写入输出文件运行,并且只有在完全写入音频和视频数据后才能知道 MOOV 原子的确切内容和大小,因为它包含绝对文件大小。
使用 -movflags +faststart
,FFmpeg 允许您进行第二遍编码并将原子移动到开头。
在本地播放情况下,在文件末尾寻找播放之前,在 MOOV 原子结尾没有特殊的好处,但在渐进式下载传递中,这种做法不如在本地播放情况中不方便。
您总是希望将索引信息放在文件开头,这种布局没有任何隐藏成本,除了一个:在进行捕获/转码时,您可能无法提前知道需要多少空间来存储 MOOV 原子,而且其数据也尚不可用。因此,通常直接将有效负载写入文件,并通过添加 MOOV 和更新文件的其余部分来完成写入。