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]
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]
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