ffprobe 的使用介绍
本文主要介绍了ffprobe 基本信息查询,及码流信息探测两种使用方法. 并给出了实例.
****************************************
甲. 基本信息查询, 可以不需要输入文件.
****************************************
ffprobe -h
ffrobe 版本为4.4, 一下子就1996 行输出。 太大了, 可以归结为几类.
Main option: 主要选项
AVFormatContext option: 选项以及子项
AVCodecContext option: 选项以及子项
------------------------------------------------------------
1. 主选项:
------------------------------------------------------------
68个,还是分为三类,基础信息, format 相关, codec 相关.
关于显示版本号有几个选项,如下: 一般不常用,-hide_banner 倒可以用用.
输出格式可以指定, 可以试试xml,json等,例如: -of xml, 不指定为default
-show_program_version
-show_library_versions
-show_versions
-hide_banner //关闭默认的版本显示
-pix_fmts //显示支持的像素格式
-show_pixel_formats //详细显示像素格式
-colors //显示颜色名称和16进制数据对应关系
-sample_fmts //显示支持的音频采样格式
-layouts //显示支持的声道布局
-formats //显示支持的封装格式
-muxers // 可以细分为解复用,复用及设备
-demuxers
-devices
-codecs //显示支持的编解码格式
-encoders //可细分为编码,解码
-decoders
-filters //显示支持的过滤器
------------------------------------------------------------
2 AVFormatContext 选项相关
------------------------------------------------------------
这些选项也只是显示了解码的选项, 这些选项先忽略.
我们只是为了显示一些信息.
*********************************************
乙. 码流信息探测, 需要跟码流参数(例如文件名)
*********************************************
a. 如何使用ffprobe显示关于容器,流、包、帧的元数据信息?
1. 获取容器格式信息:-show_format
2. 获取每个流的信息:-show_streams
3. 获取每个数据包的信息:-show_packets
4. 获取帧的信息:-show_frames
还有其它一些show 选项,可用ffprobe -h |grep show 过滤查看
输出格式可以选择: default,xml,json,flag,csv,ini 各有各的用途,为了输出多样化.由-of 指定
使用方法很简单, 例如:
$ ffprobe -show_format test1.ts -of xml
b. 进一步提取其中部分信息. -show_entries(显示条目关键字)
提取流,包,帧的信息
提取信息可以用 -show_entries 后跟参数stream, packet,format等, 也可以跟frame,由于要解包,会比较慢.
进一步限定为继续加=参数限定. (key=value 方式)
例如:
流中的bit_rate, 像素格式等
ffprobe -v error -hide_banner -show_entries stream=bit_rate -of default=noprint_wrappers=1 test1.ts
包中的pts 等
ffprobe -v error -hide_banner -select_streams v -show_entries packet=pts_time -of ini test1.ts