ffprobe 的使用与理解

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容