ffprobe 官方文档在这 http://www.ffmpeg.org/ffprobe-all.html,参数很多,没必要都知道,掌握几个常用的就可以了。
常用命令
查看简单的文件信息

可以看到整体的信息大致分为两部分,从头到 Input #0 这里属于 ffprobe 的较少信息,无论你使用什么命令都会带出来,而且很占空间,你可以使用 -hide_banner 来隐藏它。
1
| ffprobe -hide_banner input.mp4
|
查看视频的封装格式
1
| ffprobe -show_format input.mp4
|

字段 |
解释 |
filename |
文件名 |
nb_streams |
流的个数 |
format_name |
封装格式 |
start_time |
开始时间,单位为秒 |
duration |
时长,单位为秒 |
size |
文件体积,单位为比特 |
bit_rate |
码率,单位为 b/s |
probe_score |
探测分数 |
查看视频的流信息
1
| ffprobe -show_streams input.mp4
|

字段 |
解释 |
Index |
当前流的索引信息 |
codec_name |
编码器名称 |
codec_long_name |
编码器可能的名字(多种编码器编出来的数据可以被识别成一种) |
profile |
一个编码参数,与编码所使用的算法相关,越高算法越复杂,可以为Baseline、Main、High等,Baseline无B帧,Main及以后可以包含B帧 |
codec_type |
流的类型 |
codec_tag_string |
Codec 所携带的标志,是 codec_tag 的字符串翻译 |
codec_tag |
Codec 所携带的标志,对应 AVStream->codecpar->codec_tag |
width |
显示宽度,对应 AVStream->codecpar->width |
Height |
显示高度,对应 AVStream->codecpar->height |
coded_width |
编码宽度 |
coded_height |
编码高度 |
has_b_frames |
视频中 b 帧的数量 |
sample_aspect_ratio |
单个像素的长宽比 |
display_aspect_ratio |
显示时像素的长宽比 |
pix_fmt |
像素格式 |
level |
编码等级,等级越高压缩越高,算法越复杂 |
color_range |
额外的色彩空间特征 |
color_space |
色彩空间类型 |
color_transfer |
颜色传输特性 |
color_primaries |
对应 av_color_primaries_name(AVStream->codecpar->color_primaries) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
查看每一帧的信息
1
| ffprobe -show_frames -of json input.mp4 > frames.json
|
一般来说我们都会将结果格式化并输出到一个文件中,因为一个视频中的帧太多了,放在终端中很不方便查看。我这里选用的是 json 格式化,也可以选择 xml 格式化,看个人习惯了。
有时候你想只筛选视频帧的话可以加一个限制条件
1
| ffprobe -show_frames -selsect_streams video -of json input.mp4 > frames.json
|
查看每一个 packet 的信息
1
| ffprobe -show_packets -of json input.mp4 > frames.json
|
用法和 -show_streams 差不多,信息更多一些,要想更多还可以叠加一个 -show_data,多数情况下用不到。
字段解释