ffprobe -i 輸入視頻路徑 -v quiet -print_format json -show_format -show_streams
./ffprobe -select_streams v -show_packets -of json 1.ts
如果是音頻,改 -select_streams a
如果要選擇音軌,可以這樣 -select_streams a:0
./ffprobe -select_streams a:0 -show_packets -of json 1.ts
--------------------
ffprobe主要用來查看多媒體文件的信息。本文帶領大家學習ffprobe的常用命令。
常用參數比較多,可以使用ffprobe --help來查看詳細的幫助信息
image.png
上圖輸出的幫助信息即使ffprobe的常用的操作參數,也是ffprobe的基礎參數。例如查看log,查看每一個音頻數據包含信息或者視頻數據包信息,查看每一個流有多少幀以及每一個流有多少音視頻包,查看視頻像素點的格式等等。
下面根據以上的輸出參數重點舉幾個栗子:
-show_packets 和 -show_data
使用ffprobe -show_packets input.mp4:
-show_packets查看的多媒體數據包信息使用PACKET標簽擴起來了,其中包含的信息內容如下表所示:packet字段說明
字段 | 說明 |
---|---|
codec_type | 多媒體類型,如視頻包、音頻包等 |
stream_index | 多媒體的stream索引 |
pts | 多媒體的顯示時間值 |
pts_time | 根據不同格式計算過的多媒體的顯示時間 |
dts | 多媒體解碼時間值 |
dts_time | 根據不同格式計算后的多媒體解碼時間值 |
duration | 多媒體包占用的時間值 |
duration_time | 根據不同格式計算后的多媒體包占用的時間值 |
size | 多媒體包的大小 |
pos | 多媒體包所在的文件偏移位置 |
flags | 多媒體包標記,如關鍵包與非關鍵包的標記 |
除了以上字段和信息之外,還可以通過ffprobe -show_data -show_packets input.mp4組合參數來查看包中的具體數據,輸出結果我就不截圖展示了,就是在每個packet數據下面有一段data數據。
通過ffprobe讀取packets來進行對應的數據分析,使用-show_packets和-show_data配合可以進行更加精確的分析
-show_format命令
通過ffprobe -show_format 命令可以查看多媒體餓封裝格式,其使用FORMAT標簽擴起來顯示:
對輸出信息關鍵字段說明:
字段 | 說明 |
---|---|
filename | 文件名 |
nb_stream | 多媒體中包含的流的個數 |
nb_programs | 節目數 |
format_name | 使用的封裝模塊的名稱 |
format_long_name | 封裝的完整的名稱 |
start_time | 媒體文件的起始時間 |
duration | 媒體文件的總時間長度 |
size | 媒體文件的大小 |
bit_rate | 媒體文件的碼率 |
-show_frames
通過ffprobe -show_frames 命令可以查看視頻文件中的幀信息,輸出的幀信息使用FRAME標簽擴起來:
字段 | 說明 |
---|---|
media_type | 幀的類型(視頻、音頻、字幕等) |
key_frame | 是否關鍵幀 |
pkt_pts | Frame包的pts |
pkt_pts_time | Frame包的pts的時間顯示 |
pkt_dts | Frame包的dts |
pkt_duration | Frame包的時長 |
pkt_pos | Frame包所在文件的偏移位置 |
width | 幀顯示的寬度 |
height | 幀顯示的高度 |
pix_fmt | 幀的圖像色彩格式 |
pict_type | 幀類型 |
-show_streams
通過ffprobe -show_frames 命令可以查看視頻文件中的幀信息,輸出的幀信息使用STREAM標簽擴起來:
字段 | 說明 |
---|---|
index | 流所在的索引區域 |
codec_name | 編碼名 |
codec_long_name | 編碼全名 |
profile | 編碼的profile |
level | 編碼的level |
has_b_frame | 包含B幀信息 |
codec_type | 編碼類型 |
codec_time_base | 編碼的時間戳計算基礎單位 |
pix_fmt | 圖像顯示的色彩格式 |
coded_width | 圖像的寬度 |
coded_height | 圖像的高度 |
codec_tag_string | 編碼的標簽數據 |
r_frame_rate | 實際幀率 |
avg_frame_rate | 平均幀率 |
time_base | 時間基數(用來計算timestamp) |
bit_rate | 碼率 |
max_bit_rate | 最大碼率 |
nb_frames | 幀數 |
格式化 ffprobe的命令的輸出格式
默認的輸出格式都是以key - value的格式的顯示方式,由於每個人的閱讀習慣不一樣,有人認為方便有人認為不方便;ffprobe支持多種格式的輸出,包括XML、INI、JSON、CSV、FLAT等。
如何定制輸出格式呢,ffprobe -print_format 或者 ffprobe -of 來格式化。舉個栗子:
ffprobe -of xml -show_streams input.mp4