首页 > 编程知识 正文

ffprobe.exe,ffprobe是什么

时间:2023-05-04 12:16:51 阅读:278311 作者:3626

在FFMpeg套件中,除了ffmpeg作为多媒体处理工具之外,还有ffprobe多媒体信息查看工具,ffprobe主要用来查看多媒体文件的信息,下面就来看一下ffprobe中常见的基本命令

  ffprobe常用的参数比较多,可以通过ffprobe --help来查看详细的帮助信息:

ffprobe --help的输出信息即是ffprobe常用的操作参数,也是ffporbe的基本参数,例如查看log,查看每一个音频数据包信息或者视频数据包信息,查看节目信息,查看流信息,查看每一个流有多少帧以及每一个帧有多少个音视频包,查看视频像素点的格式等。
示例:

查看多媒体数据包信息:

ffprobe -show_packets inuput.flv

[PACKET] codec_type=video stream_index=0 pts=459776 pts_time=35.920000 dts=458752 dts_time=35.840000 duration=512 duration_time=0.040000 size=9253 pos=22648137 flags=__ [/PACKET] [PACKET]

  通过show_packets查看的多媒体数据包信息使用PACKET标签括起来,其中包含信息主要如果表:
PACKET字段说明:

  除了了以上字段和信息之外,还可以通过组合参数来查看包的具体数据:
示例:

ffprobe -show_data -show_packets inuput.flv


  从输出的内容中可以看到多媒体包中包含的数据,初始信息为000000103019e6174,那么我们可以搞基上述输出内容中的pos,也就是文件偏移位置来查看,pos的值为20994,将其转换为十六进制,位置为0x00005202.刚好等于FLVTAG的数据在FLV文件的偏移位置,可以使用Linux下的xxd input.flv命令进行查看:

    通过ffprobe读取PACKETS来进行对应的数据分析,使用show_packets与show_data配合可以进行更精确的分析。

    除了packets与data之外,ffprobe还可以分析多媒体的封装格式,

ffprobe -show_format output.mp4

上述命令可以查看多媒体的封装格式,其使用FORMAT标签括起来显示:

下面对输出信息关键字字段进行说明:
format字段说明:

  通过字段来解析输出,可以看到这个视频文件只有1个流通道,起始时间是0.000000,总时间长度达到10.080000,文件大小为212111字节,码率为168342bit/s,这个文件的格式有可能是MOV,MP4,M4A,3GP,3G2或者MJ2,之所以ffprobe会这么输出,是因为这几种封装格式在ffprobe中所识别的标签基本相同,所以才会这么多种显示方式,而其他几种封装格式不一定是这样的,下面我们再来看一下WMV的封装格式:

ffprobe -show_format output.wmv


  这个input.wav文件中包含一个流通道,文件封装格式为ASF。

查看视频文件中的帧信息,输出的帧信息使用FRAME标签括起来:

ffprobe -show_frames inuput.flv


  通过-show_frames参数可以查看每一帧的信息,下面就来介绍一下其中重要的信息
frame字段说明

  在windows下常用的Elecard StreamEye工具中打开MP4时,会很直观地看到帧类型显示,用ffprobe的pict_type同样可以看到视频的帧是I帧,P帧或者B帧;每一帧的大小同样也可以通过ffprobe的pkt_size查看到。

查看多媒体文件中的流信息,流的信息将使用STREAM标签括起来:

ffprobe -show_streams inuput


如以上输出内容所示,从中可以看到流的信息,
stream字段说明

除了以上这些信息,还有更多信息,具体如下:

下面在来介绍一下多输出的这些信息,
stream字段其他说明

  ffprobe使用前面的参数可以获得key-value格式的显示方式,但是阅读起来因习惯不同,可能有的人会认为方便,有的人认为不方便;如果要进行格式的显示,这样就需用到ffprobe -print_format或者ffprobe-of参数来进行相应的格式输出。而-print_format支持多种格式输出,包括XML,INIm,JSON,CSV,FLAT等。下面列举几种常见的格式输出的例子。

  通过以小得到XML输出格式命令如下:

ffprobe -of xml -show_streams inuput.xml

  从输出的内容可以看出,输出的内容格式为xml格式,如果原有的业务本身就可以解析xml格式,那么就不需要更改解析引擎,直接将输出内容为XML格式即可,解析引擎Packet信息时会很方便

  通过以下命令得到INI格式的输出:

ffprobe -of ini-show_streams inuput.flv


  从输出内容可以看到输出的内容为INI格式,这种格式可以用于擅长解析INI格式的项目中。

  通过以下命令输出JSON格式:

ffprobe -of json -show_packets inuput.flv


  从输出内容可以看到,内容信息还是Packetd 信息,但是输出的形式为JSON的格式,这种格式的数据可以用在以JSON解析为主的业务中。

  通过以下命令输出CSV格式

fforobe -of csv -show_packets inuput.flv

  通过各种格式的输出,可以使用对应的绘图方式绘图出可视化图形
  CSV格式输出后可使用EXCEL打开表格形象,如图

使用Excel查看媒体信息CSV格式的输出
  将表格的数据以图形的方式绘制出来

Excel查看媒体信息CSV转换图表格式输出
   可以看到,下图所示图形与Elecard StreamEye的可视化图形基本相同。

图 ELecard Stream Eye查看流媒体帧信息可视化图
    使用select_streams可查看音频(a),视频(v),字幕(s)的信息,例如配合show_frames查看视频的frames信息;

ffprobe -show_frames -select_streams v -of xml inuput.mp4

命令执行后可以看到输出如下:

从以上的输出内容可以看到,输出的frame信息全部为视频相关的信息。

极速赛车稳赚4码息,具体如下:

下面在来介绍一下多输出的这些信息,
stream字段其他说明

  ffprobe使用前面的参数可以获得key-value格式的显示方式,但是阅读起来因习惯不同,可能有的人会认为方便,有的人认为不方便;如果要进行格式的显示,这样就需用到ffprobe -print_format或者ffprobe-of参数来进行相应的格式输出。而-print_format支持多种格式输出,包括XML,INIm,JSON,CSV,FLAT等。下面列举几种常见的格式输出的例子。

  通过以小得到XML输出格式命令如下:

ffprobe -of xml -show_streams inuput.xml

  从输出的内容可以看出,输出的内容格式为xml格式,如果原有的业务本身就可以解析xml格式,那么就不需要更改解析引擎,直接将输出内容为XML格式即可,解析引擎Packet信息时会很方便

  通过以下命令得到INI格式的输出:

ffprobe -of ini-show_streams inuput.flv


  从输出内容可以看到输出的内容为INI格式,这种格式可以用于擅长解析INI格式的项目中。

  通过以下命令输出JSON格式:

ffprobe -of json -show_packets inuput.flv


  从输出内容可以看到,内容信息还是Packetd 信息,但是输出的形式为JSON的格式,这种格式的数据可以用在以JSON解析为主的业务中。

  通过以下命令输出CSV格式

fforobe -of csv -show_packets inuput.flv

  通过各种格式的输出,可以使用对应的绘图方式绘图出可视化图形
  CSV格式输出后可使用EXCEL打开表格形象,如图

使用Excel查看媒体信息CSV格式的输出
  将表格的数据以图形的方式绘制出来

Excel查看媒体信息CSV转换图表格式输出
   可以看到,下图所示图形与Elecard StreamEye的可视化图形基本相同。

图 ELecard Stream Eye查看流媒体帧信息可视化图
    使用select_streams可查看音频(a),视频(v),字幕(s)的信息,例如配合show_frames查看视频的frames信息;

ffprobe -show_frames -select_streams v -of xml inuput.mp4

命令执行后可以看到输出如下:

从以上的输出内容可以看到,输出的frame信息全部为视频相关的信息。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。