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

常用命令

查看简单的文件信息

1
ffprobe input.mp4

image-20220618160027657

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

1
ffprobe -hide_banner input.mp4

查看视频的封装格式

1
ffprobe -show_format input.mp4

image-20220618212952142

字段 解释
filename 文件名
nb_streams 流的个数
format_name 封装格式
start_time 开始时间,单位为秒
duration 时长,单位为秒
size 文件体积,单位为比特
bit_rate 码率,单位为 b/s
probe_score 探测分数

查看视频的流信息

1
ffprobe -show_streams input.mp4

image-20220618213640358

字段 解释
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,多数情况下用不到。

字段解释