【问题标题】:How to tell if faststart for video is set using ffmpeg or ffprobe如何判断是否使用 ffmpeg 或 ffprobe 设置了视频的快速启动
【发布时间】:2020-04-16 02:08:57
【问题描述】:

我无法确定如何确定是否在 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

【问题讨论】:

    标签: ffmpeg ffprobe


    【解决方案1】:

    运行

    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 中从命令行运行。
    • 我必须修改命令的 GREP 部分才能使其工作:ffmpeg -v trace -i file.mp4 2>&1 | grep -e "'mdat' parent" -e "'moov' parent"
    • 你需要根据你的shell转义单引号
    • 所以这在一台计算机上工作,但在另一台计算机上我得到Invalid log level "trace". ...这是因为它是旧版本的ffmpeg吗?
    • 这样说:ffmpeg version N-63893-gc69defd Copyright (c) 2000-2014 the FFmpeg developers built on Jul 16 2014 05:38:01 with gcc 4.6 (Debian 4.6.3-1)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 2023-04-07
    相关资源
    最近更新 更多