ffprobe命令参数学习总结

Posted blackhumour2018

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

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

 

5、MAIN OPTION

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

  1. 8.1 default     
  2.   默认格式。按照以下形式打印每个 section :    
  3.     [SECTION]    
  4.     key1=val1    
  5.     ...    
  6.     keyN=valN    
  7.     [/SECTION]    
  8.     
  9. 8.2 compact, csv     
  10.   紧凑与CSV格式。每个 section 打印在一个单独的行。如果不指定其他选项,其输入格式如下:    
  11.     section|key1=val1| ... |keyN=valN    
  12.     
  13. 8.3 flat    
  14.   一种自由格式输出,每一行包含一个明确的 key=value 对。    
  15.     
  16. 8.4 ini    
  17.   INI 格式输出。    
  18.     
  19. 8.5 json    
  20.   JSON 格式输出。每一个 section 使用 JSON 符号来打印。    
  21.     
  22. 8.6 xml    
  23.   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

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

 

(2)显示格式相关信息

          ffprobe -show_format test.flv

  1. Input #0, flv, from ‘test.flv‘:  
  2.   Metadata:  
  3.     major_brand     : qt    
  4.     minor_version   : 512  
  5.     compatible_brands: qt    
  6.     encoder         : Lavf54.63.104  
  7.   Duration: 00:09:56.58, start: 0.000000, bitrate: 275 kb/s  
  8.     Stream #0:0: Video: flv1, yuv420p, 424x240, 200 kb/s, 15 tbr, 1k tbn, 1k tbc  
  9.     Stream #0:1: Audio: mp3, 22050 Hz, stereo, s16p, 0 kb/s  
  10. [FORMAT]  
  11. filename=test.flv  
  12. nb_streams=2  
  13. format_name=flv  
  14. format_long_name=FLV (Flash Video)  
  15. start_time=0.000000  
  16. duration=596.584000  
  17. size=20546366  
  18. bit_rate=275520  
  19. TAG:major_brand=qt    
  20. TAG:minor_version=512  
  21. TAG:compatible_brands=qt    
  22. TAG:encoder=Lavf54.63.104  
  23. [/FORMAT]  


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

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

            ffprobe -show_packets sample.mp4

  1. [PACKET]  
  2. codec_type=video  
  3. stream_index=0  
  4. pts=14314  
  5. pts_time=596.416667  
  6. dts=14314  
  7. dts_time=596.416667  
  8. duration=1  
  9. duration_time=0.041667  
  10. convergence_duration=N/A  
  11. convergence_duration_time=N/A  
  12. size=478  
  13. pos=38774446  
  14. flags=_  
  15. [/PACKET]  
  16. ......  

(5)显示帧信息

           ffprobe -show_frames sample.mp4

  1. [FRAME]  
  2. media_type=video  
  3. key_frame=0  
  4. pkt_pts=1  
  5. pkt_pts_time=0.041667  
  6. pkt_dts=1  
  7. pkt_dts_time=0.041667  
  8. pkt_duration=1  
  9. pkt_duration_time=0.041667  
  10. pkt_pos=1190  
  11. pkt_size=13  
  12. width=424  
  13. height=240  
  14. pix_fmt=yuv420p  
  15. sample_aspect_ratio=N/A  
  16. pict_type=P  
  17. coded_picture_number=1  
  18. display_picture_number=0  
  19. interlaced_frame=0  
  20. top_field_first=0  
  21. repeat_pict=0  
  22. reference=0  
  23. [/FRAME]  
  24. [FRAME]  
  25. media_type=video  
  26. key_frame=0  
  27. pkt_pts=3  
  28. pkt_pts_time=0.125000  
  29. pkt_dts=3  
  30. pkt_dts_time=0.125000  
  31. pkt_duration=1  
  32. pkt_duration_time=0.041667  
  33. pkt_pos=2570  
  34. pkt_size=13  
  35. width=424  
  36. height=240  
  37. pix_fmt=yuv420p  
  38. sample_aspect_ratio=N/A  
  39. pict_type=P  
  40. coded_picture_number=3  
  41. display_picture_number=0  
  42. interlaced_frame=0  
  43. top_field_first=0  
  44. repeat_pict=0  
  45. reference=0  
  46. [/FRAME]  
  47. ....   

(6)显示流信息

         ffprobe -show_streams sample.mp4

  1. [STREAM]  
  2. index=0  
  3. codec_name=h264  
  4. codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10  
  5. profile=Constrained Baseline  
  6. codec_type=video  
  7. codec_time_base=1/48  
  8. codec_tag_string=avc1  
  9. codec_tag=0x31637661  
  10. width=424  
  11. height=240  
  12. has_b_frames=0  
  13. sample_aspect_ratio=0:1  
  14. display_aspect_ratio=0:1  
  15. pix_fmt=yuv420p  
  16. level=30  
  17. timecode=N/A  
  18. id=N/A  
  19. r_frame_rate=24/1  
  20. avg_frame_rate=24/1  
  21. time_base=1/24  
  22. start_pts=0  
  23. start_time=0.000000  
  24. duration_ts=14315  
  25. duration=596.458333  
  26. bit_rate=420991  
  27. nb_frames=14315  
  28. nb_read_frames=N/A  
  29. nb_read_packets=N/A  
  30. DISPOSITION:default=0  
  31. DISPOSITION:dub=0  
  32. DISPOSITION:original=0  
  33. DISPOSITION:comment=0  
  34. DISPOSITION:lyrics=0  
  35. DISPOSITION:karaoke=0  
  36. DISPOSITION:forced=0  
  37. DISPOSITION:hearing_impaired=0  
  38. DISPOSITION:visual_impaired=0  
  39. DISPOSITION:clean_effects=0  
  40. DISPOSITION:attached_pic=0  
  41. TAG:creation_time=1970-01-01 00:00:00  
  42. TAG:language=eng  
  43. TAG:handler_name=DataHandler  
  44. [/STREAM]  
  45. [STREAM]  
  46. index=1  
  47. codec_name=aac  
  48. codec_long_name=AAC (Advanced Audio Coding)  
  49. profile=unknown  
  50. codec_type=audio  
  51. codec_time_base=1/48000  
  52. codec_tag_string=mp4a  
  53. codec_tag=0x6134706d  
  54. sample_fmt=fltp  
  55. sample_rate=48000  
  56. channels=2  
  57. bits_per_sample=0  
  58. id=N/A  
  59. r_frame_rate=0/0  
  60. avg_frame_rate=0/0  
  61. time_base=1/48000  
  62. start_pts=0  
  63. start_time=0.000000  
  64. duration_ts=28628992  
  65. duration=596.437333  
  66. bit_rate=99080  
  67. nb_frames=27958  
  68. nb_read_frames=N/A  
  69. nb_read_packets=N/A  
  70. DISPOSITION:default=0  
  71. DISPOSITION:dub=0  
  72. DISPOSITION:original=0  
  73. DISPOSITION:comment=0  
  74. DISPOSITION:lyrics=0  
  75. DISPOSITION:karaoke=0  
  76. DISPOSITION:forced=0  
  77. DISPOSITION:hearing_impaired=0  
  78. DISPOSITION:visual_impaired=0  
  79. DISPOSITION:clean_effects=0  
  80. DISPOSITION:attached_pic=0  
  81. TAG:creation_time=1970-01-01 00:00:00  
  82. TAG:language=eng  
  83. TAG:handler_name=DataHandler  
  84. [/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




























































以上是关于ffprobe命令参数学习总结的主要内容,如果未能解决你的问题,请参考以下文章

Linux命令学习总结:shutdown

Linux命令学习总结:ls

springboot学习总结外部配置(命令行参数配置常规属性配置类型安全的配置之基于properties)

springboot学习总结外部配置

学号 20175223 《Java程序设计》第 5 周学习总结

Docker学习总结之Run命令介绍