如何使用ffmpeg或ffprobe检查视频的快速启动设置

7

我在寻找如何确定MP4视频是否设置了快速启动功能,但遇到了困难。

我知道“moov原子”是必须位于文件开头才能启用快速启动功能的数据,而不是位于文件末尾。

我特别想使用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
1个回答

19

运行

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'"

我尝试在一个我非常确定没有快速启动的文件上运行,但没有得到任何返回结果。然后我又尝试了另一个文件,我很确定它有快速启动(在第一个文件上运行了ffmpeg -movflags +faststart),但同样没有得到任何返回结果。我是在Linux命令行中运行的。 - jsherk
1
我不得不修改命令中的GREP部分才能使其正常工作:ffmpeg -v trace -i file.mp4 2>&1 | grep -e "'mdat' parent" -e "'moov' parent" - jsherk
你需要根据你的shell转义单引号。 - Gyan
所以这在一台电脑上运行正常,但在另一台电脑上出现了“无效的日志级别'trace'”...这是因为它是较旧版本的ffmpeg吗? - jsherk
@Simon 在这里工作,但我必须对grep字符串加双引号。 - Gyan
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接