我使用此代码通过 ffprobe 提取视频信息:
ffprobe -show_streams -of json -v quiet -i input.mp4
所有流的信息都出现在输出中,而我只需要v:0和a:0流的信息。
我知道流选择有-select_streams
选项,但它只接受一个参数,如:-select_streams v:0
。
我可以通过两个参数-select_streams
和v:0
使用a:0
或使用它两次吗?
答案 0 :(得分:4)
我知道我迟到了,但是如果其他人搜索类似的东西(来自here):
ffprobe -show_streams -select_streams a INPUT
其中 a 代表 audio ,当然可以替换为:
请注意,如果要查看2个不同的流(如音频和视频),则需要运行两次ffprobe。
更多好东西,虽然写得非常普遍,但您也可以查看:https://trac.ffmpeg.org/wiki/FFprobeTips
答案 1 :(得分:3)
我有一个类似的场景,我想将 ffprobe -show_frames 的输出限制为特定的音频和视频流。
-select_streams 似乎不能接受超过1个 stream_specifier ,也不能为同一 ffprobe 命令提供多次。
>此外, ffprobe 不像 ffmpeg 那样接受 -map 参数。该参数允许ffmpeg处理特定的流,并且可以多次提供。
我最终要做的是使用 ffmpeg -map 过滤所需的流,并将输出通过管道传递到 ffprobe -show_frames ,如下所示:< / p>
ffmpeg -i INPUT -map 0:0 -map 0:1 -c copy -f matroska - | ffprobe -show_frames -
一些注意事项:
答案 2 :(得分:2)
您可以简单地省略-select_streams
参数并使用-show_entries
参数传递
您希望在输出中看到的字段,如下所示:
ffprobe -show_streams -show_entries format=bit_rate,filename,start_time:stream=duration,width,height,display_aspect_ratio,r_frame_rate,bit_rate -of json -v quiet -i input.mp4
那应该给你一个类似的输出:
{
"programs": [
],
"streams": [
{
"width": 360,
"height": 202,
"display_aspect_ratio": "16:9",
"r_frame_rate": "2997/100",
"duration": "68.601935",
"bit_rate": "449366",
"disposition": {
"default": 1,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0
},
"tags": {
"language": "eng",
"handler_name": "VideoHandler"
}
},
{
"r_frame_rate": "0/0",
"duration": "68.475646",
"bit_rate": "65845",
"disposition": {
"default": 1,
"dub": 0,
"original": 0,
"comment": 0,
"lyrics": 0,
"karaoke": 0,
"forced": 0,
"hearing_impaired": 0,
"visual_impaired": 0,
"clean_effects": 0,
"attached_pic": 0
},
"tags": {
"language": "eng",
"handler_name": "SoundHandler"
}
}
],
"format": {
"filename": "input.mp4",
"start_time": "0.000000",
"bit_rate": "522013"
}
}
从中可以使用返回的JSON对象流索引到所需的流,如Powershell中所示:
PS C:\Users\User> $json.streams[0]
width : 360
height : 202
display_aspect_ratio : 16:9
r_frame_rate : 2997/100
duration : 68.601935
bit_rate : 449366
disposition : @{default=1; dub=0; original=0; comment=0; lyrics=0; karaoke=0; forced=0; hearing_impaired=0; visual_impaired=0; clean_effects=0; attached_pic=0}
tags : @{language=eng; handler_name=VideoHandler}
PS C:\Users\User> $json.streams[1]
r_frame_rate : 0/0
duration : 68.475646
bit_rate : 65845
disposition : @{default=1; dub=0; original=0; comment=0; lyrics=0; karaoke=0; forced=0; hearing_impaired=0; visual_impaired=0; clean_effects=0; attached_pic=0}
tags : @{language=eng; handler_name=SoundHandler}
您可以在此处从不同类型的流中获取关键字段名称列表:https://trac.ffmpeg.org/wiki/FFprobeTips