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
- ‘-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
以上是关于ffprobe命令参数学习总结的主要内容,如果未能解决你的问题,请参考以下文章
springboot学习总结外部配置(命令行参数配置常规属性配置类型安全的配置之基于properties)