ffprobe主要用来查看多媒体文件的信息,可以从音视频数据组成层面来一层一层拆分来理解
多媒体文件 ->封装格式(format) -> 数据流(streams)->数据包(packets)->数据帧(frame)
音视频播放处理,说白了就是处理这些信息的数据,并非什么很高深的技术,通过ffprobe命令可以很好的来理解各个字段信息的概念和作用,以及处理方式方法。
(1)ffprobe gcw_test.mp4
文件信息层面,获取文件的基本信息Matedata数据:
(2)ffprobe -show_format gcw_test.mp4
获取封装格式层面的信息
(3)ffprobe -show_streams gcw_test.mp4
获取stream层的信息,这里分为视频流,音频流的详细信息
video
audio
(4)ffprobe -show_packets gcw_test.mp4
获取packets层面的信息,分为视频类packets 和音频类packets
此命令还可以结合 -show_data获取到packets中的数据
ffprobe -show_packets -show_data gcw_test.mp4
show_packets查看的多媒体包信息使用PACKET标签所包括起来,其中包含的信息主要如下:
codec_type: 多媒体类型,例如视频包,音频包等;
stream_index: 多媒体的stream索引;
pts: 多媒体的显示时间值
pts_time: 根据不同格式计算过后的多媒体的显示时间
dts: 多媒体解码时间值
dts_time: 根据不同格式计算过后的多媒体解码时间
duration: 多媒体包占用的时间值
duration_time: 根据不同格式计算过后的多媒体包占用的时间值
size: 多媒体包的大小
pos: 多媒体包所在的文件偏移位置
flags: 多媒体包标记,关键包与非关键包的标记
video
audio
(5)获取frame层面的信息
分为视频类frame和音频类frame
video
pic_type表示 I B P 帧
pkt_size表示每一帧的大小
audio
几个常的参数:
-of outformat数据输出查看信息的格式,例如 xml json csv
例如 ffprobe -show_frame -of json gcw_test.mp4
-select_stream 过滤视频流,音频流,字幕流。。。
v表示视频流
a表示音频流
例如
只看所有的视频帧信息
ffprobe -show_frams -select_streams v -of gcw_test.mp4
只看所有的音频帧的信息
ffprobe -show_frames -select_streams a -of gcw_text.mp4
参考贴:http://blog.chinaunix.net/uid-11344913-id-5750194.html