如何检查用于视频的编码器
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。
我正在制作一个 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。