我正在使用 ffmpeg 将视频转换为 H.264 / MP4。然后使用 将 moov 原子移动到文件开头qt-faststart
,这样我就可以流式传输视频。
对于 5-10 分钟长的小视频,一切都运行良好,但对于 1-2 小时长的大视频,可能需要相当长的时间才能开始播放。它加载了 6-10 MB,然后我才能开始播放视频。
FLV 视频则不然;无论视频有多大,它都会立即播放。我该如何解决这个问题?
答案1
你可以使用以下命令检查 MOOV 原子的大小原子欧芹. 运行atomicparsley file.mp4 -T
并寻找类似这样的内容:
Atom moov @ 20 of size: 1653815, ends @ 1653835
例如,此处的原子大小为 1653815 字节(大约 1.5 MB)。对于您的文件而言,原子可能太大了。
您可以尝试在编码过程中减小其大小。在 ffmpeg 中,您可以设置原子的最大大小选择-moov_size
话虽如此,您的文件可能太大了,您应该考虑更改您的流媒体方法。
一种方法是使用 ISMV“流畅流式传输”格式。它会创建碎片化的 MP4 文件。您可以通过设置其中一个碎片选项并选择一个空的 MOOV 来启用它。例如:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict experimental \
-b:v 1M -b:a 128k -movflags frag_keyframe+empty_moov \
output.mp4