ffprobe命令参数学习总结


1、NAME
       ffprobe - ffprobe media prober

2、SYNOPSIS
       ffprobe [options] [input_file]

3、DESCRIPTION
       ffprobe gathers information from multimedia streams and prints it in
       human- and machine-readable fashion.

4、GENERIC OPTION

‘-L’    显示 license  
‘-h, -?, -help, --help [arg]’ 打印帮助信息;可以指定一个参数 arg ,如果不指定,只打印基本选项  
   可选的 arg 选项:  
   ‘long’    除基本选项外,还将打印高级选项  
   ‘full’    打印一个完整的选项列表,包含 encoders, decoders, demuxers, muxers, filters 等的  
                共享以及私有选项  
   ‘decoder=decoder_name’    打印名称为 “decoder_name” 的解码器的详细信息  
   ‘encoder=encoder_name’    打印名称为 “encoder_name” 的编码器的详细信息  
   ‘demuxer=demuxer_name’    打印名称为 “demuxer_name” 的 demuxer 的详细信息  
   ‘muxer=muxer_name’        打印名称为 “muxer_name” 的 muxer 的详细信息  
   ‘filter=filter_name’      打印名称为 “filter_name” 的过滤器的详细信息  
              
‘-version’     显示版本信息  
‘-formats’     显示有效的格式  
‘-codecs’      显示 libavcodec 已知的所有编解码器  
‘-decoders’    显示有效的解码器  
‘-encoders’    显示有效的编码器  
‘-bsfs’        显示有效的比特流过滤器  
‘-protocols’   显示有效的协议  
‘-filters’     显示 libavfilter 有效的过滤器  
‘-pix_fmts’    显示有效的像素格式   
‘-sample_fmts’ 显示有效的采样格式  
‘-layouts’     显示通道名称以及标准通道布局  
‘-colors’      显示认可的颜色名称  
‘-hide_banner’ 禁止打印欢迎语;也就是禁止默认会显示的版权信息、编译选项以及库版本信息等

5、MAIN OPTION

    ‘-f format’    强制使用的格式  
    ‘-unit’        显示值的单位  
    ‘-prefix’      显示的值使用标准国际单位制词头  
    ‘-byte_binary_prefix’ 对字节值强制使用二进制前缀  
    ‘-sexagesimal’ 时间值使用六十进位的格式 HH:MM:SS.MICROSECONDS  
    ‘-pretty’      美化显示值的格式。它相当于 "-unit -prefix -byte_binary_prefix -sexagesimal"  
    ‘-of, -print_format writer_name[=writer_options]’   
                  设置输出打印格式。writer_name 指定打印程序 (writer) 的名称,writer_options   
                  指定传递给 writer 的选项。例如:将输出打印为 JSON 格式:-print_format json   
    ‘-select_streams stream_specifier’   
                  只选择 stream_specifier 指定的流。该选项只影响那些与流相关的选项  
                  (例如:show_streams, show_packets, 等)。  
                  举例:只显示音频流,使用命令:  
                    ffprobe -show_streams -select_streams a INPUT  
                       只显示视频流,使用命令:
                    ffprobe -show——streams -select_streams v INPUT
    ‘-show_data’ 显示有效载荷数据,以十六进制和ASCII转储。与 ‘-show_packets’ 结合使用,它将   
                  dump 包数据;与 ‘-show_streams’ 结合使用,它将 dump codec 附加数据。  
    ‘-show_error’    显示探测输入文件时的错误信息  
    ‘-show_format’   显示输入多媒体流的容器格式信息  
    ‘-show_packets’  显示输入多媒体流中每一个包的信息  
    ‘-show_frames’   显示输入多媒体流中的每一帧以及字幕的信息  
    ‘-show_streams’  显示输入多媒体流中每一个流的信息  
    ‘-show_programs’ 显示输入多媒体流中程序以及它们的流的信息  
    ‘-show_chapters’ 显示格式中存储的章节信息  
    ‘-count_frames’  计算每一个流中的帧数,在相应的段中进行显示  
                如:ffprobe -show_streams -count_frames -i sample.mp4
                  n_read_frames会有数据,否则为N/A
    ‘-count_packets’ 计算每一个流中的包数,在相应的段中进行显示  
    ‘-show_program_version’   显示程序版本及配置相关信息  
    ‘-show_library_versions’  显示库版本相关信息  
    ‘-show_versions’          显示程序和库版本相关信息。相当于同时设置‘-show_program_version’ 和   
                              ‘-show_library_versions’  
    ‘-i input_file’           指定输入文件  


6、AVOPTION

      音视频选项。这些选项直接由libavformat, libavdevice和libavcodec库提供,它们可以分成两类:
generic : 这些选项可以用于设置所有容器,codec或设备。
          一般的选项都列在AVFormatContext容器/设备之下,并根据AVCodecContext中选择编解码器。
private : 这些选项用于设置指定的容器,设备和codec. 私有选项都列在它们对应的容器/设备/codec下。

例如:
写一个ID3v2.3头来代替默认的ID3v2.4头到一个MP3文件,使用MP3混合器的"id3v2_version"私有选项:
    ffmpeg -i input.flac -id3v2_version 3 out.mp3

所有AVOption选项可作用于每个流,因此使用流指示符来指示作用于特定流。
Note: the ‘-nooption’ syntax cannot be used for boolean AVOptions, use ‘-option 0’/‘-option 1’.
Note: the old undocumented way of specifying per-stream AVOptions by prepending v/a/s to the options name is now obsolete and will be removed soon.


7、OTHER OPTION

    NONE


8、WRITERS

    8.1 default   
      默认格式。按照以下形式打印每个 section :  
        [SECTION]  
        key1=val1  
        ...  
        keyN=valN  
        [/SECTION]  
      
    8.2 compact, csv   
      紧凑与CSV格式。每个 section 打印在一个单独的行。如果不指定其他选项,其输入格式如下:  
        section|key1=val1| ... |keyN=valN  
      
    8.3 flat  
      一种自由格式输出,每一行包含一个明确的 key=value 对。  
      
    8.4 ini  
      INI 格式输出。  
      
    8.5 json  
      JSON 格式输出。每一个 section 使用 JSON 符号来打印。  
      
    8.6 xml  
      XML 格式输出

9、流指示符

     很多选项可应用于每个流,如码率或codec.
    流指示符用于明确指示给定的选项属于哪个流。

    流指示符是跟在选项名后的字符串,由冒号分隔。
    例如:
           -codec:a:1 ac3
    它包含了 a:1 这个流指示符,用于匹配第二个音频流,因此,整个意思是选择AC3 codec来处理第二个音频流。

    一个流指示符可以匹配多个流,因此选项也可以同时作用于它们。
    例如,
         -b:a 128k     匹配所有的音频流;

    空流指示符匹配所有流。
   例如:
         -codec copy 或 -codec:copy  指示所有的流都不进行再编码;

    流指示符的可能形式:
     ‘stream_index’ 使用索引号来匹配流;
    例如:
         -threads:1 4 
    将设置第二个流的线程数为4;

    ‘stream_type[:stream_index]’
     stream_type可以是下列之一: 
            'v'  为视频;
           'a'  为音频;
           's'  为子目录;
           'd'  为数据;
            't'  为附录。
     如果指定了stream_index,那么这些类型只能stream_index指定的流有效,否则,对所有的流起作用; 

     ‘p:program_id[:stream_index]’
      如果指定了stream_index, 那么它只匹配id号为program_id的由stream_index指定的流,否则,匹配节目中的所有流。

     ‘ #stream_id or i:stream_id’
     匹配stream_id指定的流(如, MPEG-TS容器中的PID)


10、命令示例

(1)最简单的命令:ffprobe sample.mp4

ffprobe version 1.2.3 Copyright (c) 2007-2013 the FFmpeg developers
  built on Apr 28 2015 00:55:12 with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-11)
  configuration: --enable-gpl --enable-libx264 --enable-libmp3lame --disable-yasm
  libavutil      52. 18.100 / 52. 18.100
  libavcodec     54. 92.100 / 54. 92.100
  libavformat    54. 63.104 / 54. 63.104
  libavdevice    54.  3.103 / 54.  3.103
  libavfilter     3. 42.103 /  3. 42.103
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sample.mp4':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.73.0
  Duration: 00:09:56.46, start: 0.000000, bitrate: 524 kb/s
    Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p, 424x240, 420 kb/s, 24 fps, 24 tbr, 24 tbn, 48 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : DataHandler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 99 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
      handler_name    : DataHandler

(2)显示格式相关信息

          ffprobe -show_format test.flv

Input #0, flv, from 'test.flv':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    encoder         : Lavf54.63.104
  Duration: 00:09:56.58, start: 0.000000, bitrate: 275 kb/s
    Stream #0:0: Video: flv1, yuv420p, 424x240, 200 kb/s, 15 tbr, 1k tbn, 1k tbc
    Stream #0:1: Audio: mp3, 22050 Hz, stereo, s16p, 0 kb/s
[FORMAT]
filename=test.flv
nb_streams=2
format_name=flv
format_long_name=FLV (Flash Video)
start_time=0.000000
duration=596.584000
size=20546366
bit_rate=275520
TAG:major_brand=qt  
TAG:minor_version=512
TAG:compatible_brands=qt  
TAG:encoder=Lavf54.63.104
[/FORMAT]

(3) 以 JSON 格式显示每个流的信息

             ffprobe -print_format json -show_streams test.mp4
(4)查看包信息

            ffprobe -show_packets sample.mp4

[PACKET]
codec_type=video
stream_index=0
pts=14314
pts_time=596.416667
dts=14314
dts_time=596.416667
duration=1
duration_time=0.041667
convergence_duration=N/A
convergence_duration_time=N/A
size=478
pos=38774446
flags=_
[/PACKET]
......
(5)显示帧信息

           ffprobe -show_frames sample.mp4

[FRAME]
media_type=video
key_frame=0
pkt_pts=1
pkt_pts_time=0.041667
pkt_dts=1
pkt_dts_time=0.041667
pkt_duration=1
pkt_duration_time=0.041667
pkt_pos=1190
pkt_size=13
width=424
height=240
pix_fmt=yuv420p
sample_aspect_ratio=N/A
pict_type=P
coded_picture_number=1
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
reference=0
[/FRAME]
[FRAME]
media_type=video
key_frame=0
pkt_pts=3
pkt_pts_time=0.125000
pkt_dts=3
pkt_dts_time=0.125000
pkt_duration=1
pkt_duration_time=0.041667
pkt_pos=2570
pkt_size=13
width=424
height=240
pix_fmt=yuv420p
sample_aspect_ratio=N/A
pict_type=P
coded_picture_number=3
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
reference=0
[/FRAME]
.... 
(6)显示流信息

         ffprobe -show_streams sample.mp4

[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=Constrained Baseline
codec_type=video
codec_time_base=1/48
codec_tag_string=avc1
codec_tag=0x31637661
width=424
height=240
has_b_frames=0
sample_aspect_ratio=0:1
display_aspect_ratio=0:1
pix_fmt=yuv420p
level=30
timecode=N/A
id=N/A
r_frame_rate=24/1
avg_frame_rate=24/1
time_base=1/24
start_pts=0
start_time=0.000000
duration_ts=14315
duration=596.458333
bit_rate=420991
nb_frames=14315
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
TAG:creation_time=1970-01-01 00:00:00
TAG:language=eng
TAG:handler_name=DataHandler
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
profile=unknown
codec_type=audio
codec_time_base=1/48000
codec_tag_string=mp4a
codec_tag=0x6134706d
sample_fmt=fltp
sample_rate=48000
channels=2
bits_per_sample=0
id=N/A
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/48000
start_pts=0
start_time=0.000000
duration_ts=28628992
duration=596.437333
bit_rate=99080
nb_frames=27958
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
TAG:creation_time=1970-01-01 00:00:00
TAG:language=eng
TAG:handler_name=DataHandler
[/STREAM]

(7)不显示版本等 信息

     ffprobe -v quiet -show_format -i sample.mp4


11、参考

[1]http://www.it165.net/os/html/201404/7862.html

[2]http://blog.chinaunix.net/uid-26000296-id-4282102.html

你可能感兴趣的:(ffmpeg)