如何判断是否使用 ffmpeg 或 ffprobe 设置了视频的快速启动

jsh*_*erk 5 ffmpeg ffprobe

我无法确定如何确定是否在 MP4 视频上设置了快速启动。

我知道“moov atom”是需要位于文件开头才能启用快速启动的数据,而不是文件末尾。

我特别想使用 ffmpeg 或 ffprobe 来确定它是否已移至开头。

附带说明一下,我知道我可以运行以下命令将它从结尾移到开头(但我想知道它是否已经存在):

ffmpeg -i infile.mp4 -map 0 -c:v copy -c:a copy -c:s copy -c:d copy -c:t copy -movflags +faststart outfile.mp4
Run Code Online (Sandbox Code Playgroud)

Gya*_*yan 12

ffmpeg -v trace -i file.mp4 2>&1 | grep -e type:'mdat' -e type:'moov'

这将产生类似的输出,

[mov,mp4,m4a,3gp,3g2,mj2 @ 000000000036ca40] type:'mdat' parent:'root' sz: 62740 48 65044 [mov,mp4,m4a,3gp,3g2,mj2 @ 000000000036ca40] type:'moov' parent:'root' sz: 2264 62788 65044

由于 moov 出现在第二位,因此在本示例中位于末尾。

在类似 bash 的 shell 上,转义单引号:

ffmpeg -v trace -i file.mp4 2>&1 | grep -e type:\'mdat\' -e type:\'moov\'


对于 Windows,可以使用 findstr,

ffmpeg -v trace -i file.mp4 2>&1 | findstr /l "type:'moov' type:'mdat'"

  • 我必须修改命令的 GREP 部分才能使其正常工作:`ffmpeg -v trace -i file.mp4 2>&1 | grep -e“'mdat'父级”-e“'moov'父级”` (2认同)