ffprobe 簡介
ffprobe可以從媒體流收集媒體信息扫皱,并打印出開發(fā)人員可以讀的格式屿脐,也可以把ffprobe理解為流媒體的分析工具刺覆;使用ffprobe可以查看流媒體中包含的容器,以及容器中包含的流媒體的格式和類型耍鬓。
更為詳細的介紹可以參考 https://ffmpeg.org/ffprobe.html
命令使用格式
ffprobe [選項] [‘輸入文件’]
常用命令選項介紹
以下命令主要用于顯示信息:
-hide_banner 禁止默認(rèn)會顯示的版權(quán)信息福澡、編譯選項以及庫版本信息等
-formats 顯示ffmpeg庫支持所有有效的媒體格式
-L 顯示 license
-h, -?, -help, --help [arg] 打印幫助信息叠赦;可以指定一個參數(shù) 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 顯示有效的協(xié)議
-filters 顯示 libavfilter 有效的過濾器
-pix_fmts 顯示有效的像素格式
-sample_fmts 顯示有效的采樣格式
-layouts 顯示通道名稱以及標(biāo)準(zhǔn)通道布局
-colors 顯示認(rèn)可的顏色名稱
eg:查看FFmpeg支持的編解碼格式
ffprobe -hide_banner -formats
eg:查看FFmpeg支持的網(wǎng)絡(luò)協(xié)議
ffprobe -hide_banner -protocols
eg:查看FFmpeg支持的像素格式
ffprobe -hide_banner -pix_fmts
查看詳細信息
‘-f format’ 強制使用的格式
‘-unit’ 顯示值的單位
‘-prefix’ 顯示的值使用標(biāo)準(zhǔn)國際單位制詞頭
‘-byte_binary_prefix’ 對字節(jié)值強制使用二進制前綴
‘-sexagesimal’ 時間值使用六十進位的格式 HH:MM:SS.MICROSECONDS
‘-pretty’ 美化顯示值的格式业岁。它相當(dāng)于 "-unit -prefix -byte_binary_prefix -sexagesimal"
‘-of, -print_format writer_name[=writer_options]’
設(shè)置輸出打印格式。writer_name 指定打印程序 (writer) 的名稱寇蚊,writer_options
指定傳遞給 writer 的選項笔时。例如:將輸出打印為 JSON 格式:-print_format json
‘-select_streams stream_specifier’
只選擇 stream_specifier 指定的流。該選項只影響那些與流相關(guān)的選項
(例如:show_streams, show_packets, 等)仗岸。
舉例:只顯示音頻流允耿,使用命令:
ffprobe -show_streams -select_streams a INPUT
‘-show_data’ 顯示有效載荷數(shù)據(jù)借笙,以十六進制和ASCII轉(zhuǎn)儲。與 ‘-show_packets’ 結(jié)合使用较锡,它將
dump 包數(shù)據(jù)业稼;與 ‘-show_streams’ 結(jié)合使用,它將 dump codec 附加數(shù)據(jù)蚂蕴。
‘-show_error’ 顯示探測輸入文件時的錯誤信息
‘-show_format’ 顯示輸入多媒體流的容器格式信息
‘-show_packets’ 顯示輸入多媒體流中每一個包的信息
‘-show_frames’ 顯示輸入多媒體流中的每一幀以及字幕的信息
‘-show_streams’ 顯示輸入多媒體流中每一個流的信息
‘-show_programs’ 顯示輸入多媒體流中程序以及它們的流的信息
‘-show_chapters’ 顯示格式中存儲的章節(jié)信息
‘-count_frames’ 計算每一個流中的幀數(shù)低散,在相應(yīng)的段中進行顯示
‘-count_packets’ 計算每一個流中的包數(shù),在相應(yīng)的段中進行顯示
‘-show_program_version’ 顯示程序版本及配置相關(guān)信息
‘-show_library_versions’ 顯示庫版本相關(guān)信息
‘-show_versions’ 顯示程序和庫版本相關(guān)信息骡楼。相當(dāng)于同時設(shè)置‘-show_program_version’ 和
‘-show_library_versions’
‘-i input_file’ 指定輸入文件
顯示輸入多媒體流中的每一幀以及字幕的信息
ffprobe -show_frames /Users/hnxf/Desktop/array.mp4
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/hnxf/Desktop/array.mp4':
Metadata:
major_brand : isom
minor_version : 1
compatible_brands: isom
creation_time : 2015-12-03T06:13:13.000000Z
Duration: 00:05:01.89, start: 0.000000, bitrate: 1718 kb/s
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 1651 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc (default)
Metadata:
creation_time : 2015-12-02T10:41:00.000000Z
handler_name : VideoByEZMediaEditor
vendor_id : [0][0][0][0]
Stream #0:1(und): Audio: aac (HE-AAC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 62 kb/s (default)
Metadata:
creation_time : 2015-12-02T10:41:00.000000Z
handler_name : Audio1-und
vendor_id : [0][0][0][0]
[FRAME]
media_type=video 幀的類型(視頻熔号、音頻、字幕等)
stream_index=0 幀所在的索引區(qū)域
key_frame=1 是否是關(guān)鍵幀
pkt_pts=2000 Frame包的pts
pkt_pts_time=0.066667 Frame包的pts的時間顯示
pkt_dts=2000 Frame包的dts
pkt_dts_time=0.066667 Frame包的dts的時間顯示
best_effort_timestamp=2000
best_effort_timestamp_time=0.066667
pkt_duration=1000 Frame包的時長
pkt_duration_time=0.033333 Frame包的時長時間顯示
pkt_pos=148540 Frame包所在文件的偏移位置
pkt_size=1147
width=1920
height=1080
pix_fmt=yuv420p
sample_aspect_ratio=1:1
pict_type=I 幀類型
coded_picture_number=0
display_picture_number=0
interlaced_frame=0
top_field_first=0
repeat_pict=0
color_range=unknown
color_space=unknown
color_primaries=unknown
color_transfer=unknown
chroma_location=left
[SIDE_DATA]
side_data_type=H.26[45] User Data Unregistered SEI message
[/SIDE_DATA]
[/FRAME]
以 JSON 格式顯示每個流的信息
ffprobe -print_format json -show_streams /Users/hnxf/Desktop/array.mp4
顯示輸入多媒體流中每一個包的信息
ffprobe -show_packets /Users/hnxf/Desktop/array.mp4
[PACKET]
codec_type=video 多媒體類型鸟整,例如視頻包引镊,音頻包等
stream_index=0 多媒體的stream索引;
pts=12000 多媒體的顯示時間值
pts_time=0.400000 根據(jù)不同格式計算過后的多媒體的顯示時間
dts=12000 多媒體解碼時間值
dts_time=0.400000 根據(jù)不同格式計算過后的多媒體解碼時間
duration=1000 多媒體包占用的時間值
duration_time=0.033333 根據(jù)不同格式計算過后的多媒體包占用的時間值
size=703
pos=157781 多媒體包所在的文件偏移位置
flags=__ 多媒體包標(biāo)記篮条,關(guān)鍵包與非關(guān)鍵包的標(biāo)記
[/PACKET]
顯示輸入多媒體流中每一個流的信息
ffprobe -show_streams /Users/hnxf/Desktop/array.mp4
[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=High
codec_type=video
codec_tag_string=avc1
codec_tag=0x31637661
width=1920
height=1080
coded_width=1920
coded_height=1080
closed_captions=0
has_b_frames=2
sample_aspect_ratio=1:1
display_aspect_ratio=16:9
pix_fmt=yuv420p
level=40
color_range=unknown
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=left
field_order=unknown
refs=1
is_avc=true
nal_length_size=4
id=N/A
r_frame_rate=30/1
avg_frame_rate=30/1
time_base=1/30000
start_pts=2000
start_time=0.066667
duration_ts=9056000
duration=301.866667
bit_rate=1651784
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=9056
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=1
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
DISPOSITION:timed_thumbnails=0
TAG:creation_time=2015-12-02T10:41:00.000000Z
TAG:language=und
TAG:handler_name=VideoByEZMediaEditor
TAG:vendor_id=[0][0][0][0]
[/STREAM]
統(tǒng)計視頻I弟头、B、P幀
ffprobe -v quiet -show_frames transcoded123.mp4 | grep "pict_type=B" | wc -l
如果要查看I幀和P幀涉茧,修改pict_type=I或者P即可,如果需要看關(guān)鍵幀赴恨,grep “key_frame=1”