如何检查用于视频的编码器

How can I check the encoders used for a video

我正在制作一个 python 脚本,该脚本使用 ffmpeg 和 moviepy 将视频转换为 mp4。我想做一个 if 语句来检查输入文件是否需要重新编码或只是重新包装。(如果输入文件是 aac 和 h.264,则不需要重新编码。)有没有一种简单的方法可以抓住它文件信息?

我认为最简单的方法是使用 ffprobe,并让它输出 JSON 数据,您可以在应用程序中解析这些数据。

尝试这样的事情:

ffprobe -v quiet -print_format json -show_format -show_streams input.mp4

JSON 将输出 STDOUT,因此如果您将其作为子进程执行,您只需要确保在您的应用程序中捕获其输出,然后进行解析。

使用ffprobe。示例 JSON 输出:

$ ffprobe -loglevel error -show_entries stream=codec_name -of json input.mkv
{
    "programs": [

    ],
    "streams": [
        {
            "codec_name": "h264"
        },
        {
            "codec_name": "aac"
        }
    ]
}

示例分别显示视频和音频 (-select_streams) 并且仅输出 codec_name 值:

$ ffprobe -loglevel error -select_streams V -show_entries stream=codec_name -of csv=p=0 input.mkv
h264
$ ffprobe -loglevel error -select_streams a -show_entries stream=codec_name -of csv=p=0 input.mkv
aac
  • -select_streams V 将选择输入中的所有非图像视频流。因此,如果您有多个视频流,它将为每个流输出每个对应的 codec_name。如果你只想要第一个流然后使用 V:0 和音频 a:0.

  • 选择 output format-of 选项。

  • 有关详细信息,请参阅 ffprobe documentation