获取 ffmpeg 版本号

evi*_*obu 4 ffmpeg

我正在尝试以可靠的方式从 ffmpeg 获取版本号,希望不会解析字符串。

我可以解析 的输出ffmpeg -version,但是我不能保证字符串在不久的将来不会改变。

$ ffmpeg -version
ffmpeg version 4.3.1 Copyright (c) 2000-2020 the FFmpeg developers
[...]
Run Code Online (Sandbox Code Playgroud)

我对获取版本号的稍微更编程的方式感兴趣,比如可能告诉 ffmpeg 输出 JSON 或者只是输出版本号,而我不必从文本正文中提取它。

Gya*_*yan 5

如果你有配套ffprobe工具,你可以运行

ffprobe -v 0 -of default=nw=1:nk=1 -show_program_version | head -1
Run Code Online (Sandbox Code Playgroud)

这将只打印版本字符串。

例如,

N-100221-g18befac5da
Run Code Online (Sandbox Code Playgroud)

您还可以发出 JSON。

ffprobe -v 0 -of json
Run Code Online (Sandbox Code Playgroud)

{
    "program_version": {
        "version": "N-100221-g18befac5da",
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

ffmpeg二进制文件本身并不提供这些输出。

请注意,版本字符串格式和组成可能会有所不同 - 它不是标准化的,并且可以由构建器添加自定义字符串。但一般来说,一个 git 构建会有一个提交哈希(有或没有g前缀),而一个发布构建会有一个x.y.z. 有关其他形式的几个示例,请参阅我的 Windows 版本 - 我还包括提交日期。

N上面我举的例子计数是从二进制建时提交的主分支的数量。