Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> FFmpeg使用手冊 - ffprobe 的常用命令

FFmpeg使用手冊 - ffprobe 的常用命令

編輯:關於android開發

FFmpeg使用手冊 - ffprobe 的常用命令


在FFMpeg套件中,出了ffmpeg還有ffprobe,ffprobe主要用來查看多媒體文件的信息,下面看一下ffprobe中常見的基本命令.
5.1 ffprobe 常用參數
ffprobe常用參數比較多,可以用過ffprobe --help來查看詳細的信息:

5.2 下面重點聚幾個例子:
5.2.1使用show_packets查看多媒體報信息:

show_packets查看的多媒體包信息使用PACKET標簽所包括起來,其中包含的信息主要如下:
codec_type: 多媒體類型,例如視頻包,音頻包等;
stream_index: 多媒體的stream索引;
pts: 多媒體的顯示時間值
pts_time: 根據不同格式計算過後的多媒體的顯示時間
dts: 多媒體解碼時間值
dts_time: 根據不同格式計算過後的多媒體解碼時間
duration: 多媒體包占用的時間值
duration_time: 根據不同格式計算過後的多媒體包占用的時間值
size: 多媒體包的大小
pos: 多媒體包所在的文件偏移位置
flags: 多媒體包標記,關鍵包與非關鍵包的標記

packets包中除了以上的字段和信息外,還可以通過show_data與show_packets組合來顯示包中的具體的數據:

圖中看到了多媒體包中包含的數據,初始信息為0000 01b6 51e0 47ff,那麼我們可以根據圖中的pos,也就是文件偏移位置查看,根據圖中,pos的值為3273,通過轉換為16進制,位置為0x00000cc9,與data的數據是可以對應的:

通過ffprobe讀取packets來進行對應的數據分析,使用show_packets與show_data配合可以更加精確的分析。
5.2.2除了packets與data外,ffprobe還可以分析多媒體的封裝格式,通過show_format參數可以查看多媒體的封裝格式,封裝可是使用FORMAT標簽括起來顯示:

通過讀取format信息,可以看到這個視頻文件只有一個流通道,起始時間是0.000000,長度為85.867000,文件大小為2377700字節,碼率為221523字節每秒,這個文件有可能是一個mov、有可能是mp4、有可能是m4a、有可能是3gp、有可能是3g2、也有可能是mj2,之所以ffprobe會這麼輸出,是因為這幾種封裝格式在ffmpeg中所識別的標簽基本相同,所以才會這麼多種顯示方式,而其他種封裝格式不一定是這樣的,下面我們再看一個wmv的封裝格式

這個input.wmv文件中包含兩個流通道,文件封裝格式為asf。
5.2.3通過ffprobe的show_frame的參數可以查看視頻文件中的幀信息,輸出的幀信息使用FRAME標簽括起來

通過-show_frame參數查看到如圖的信息,能夠看到每一幀的信息,下面介紹一下重要的信息

屬性

說明

media_type

幀的類型(視頻、音頻、字幕等)

video

stream_index

幀所在的索引區域

0

Key_frame

是否是關鍵幀

1

Pkt_pts

Frame包的pts

0

Pkt_pts_time

Frame包的pts的時間顯示

0.000000

Pkt_dts

Frame包的dts

0

Pkt_dts_time

Frame包的dts的時間顯示

0.000000

Pkt_duration

Frame包的時長

1024

Pkt_duration_tine

Frame包的時長時間顯示

0.066667

Pkt_pos

Frame包所在文件的偏移位置

44

Width

幀顯示的寬度

608

height

幀顯示的高度

320

Pix_fmt

幀的圖像色彩格式

Yuv420p

Pict_type

幀類型

I


在windows下常用的Elecard Stream Eye打開查看mp4時,會看到很直觀的幀類型顯示,每一幀的判斷,用ffprobe的pict_type同樣可以看到,每一幀的大小,也同樣可以通過ffprobe的pkt_size看到,pict_type可以或得到視頻的幀是I幀、P幀或者B幀。
通過-show_streams參數可以查看到多媒體文件中的流信息,流的信息使用STREAMS標簽括起來:

如圖所示,可以看到流的信息:

屬性

說明

Index

流所在的索引區域

0

Codec_name

編碼名

Mpeg4

Codec_long_name

編碼全名

MPEG-4 part 2

profile

編碼的profile

Simple Profile

level

編碼的level

1

Has_b_frames

包含B幀信息

0

Codec_tyoe

編碼類型

Video

Codec_time_base

編碼的時間戳計算基礎單位

1/15

Pix_fmt

圖像顯示圖像色彩格式

Yuv420p

Coded_width

圖像的寬度

608

Coded_height

圖像的高度

320

Codec_tag_string

編碼的標簽數據

Mp4v


除了以上這些信息,還有更多信息

下面再介紹一下圖中這些信息

屬性

說明

R_frame_rate

實際幀率

15/1

Avg_frame_rate

平均幀率

15/1

Time_base

時間基數(用來做timestamp計算)

1/15360

Bit_rate

碼率

220914

Max_bit_rate

最大碼率

220914

Nb_frames

幀數

1288


5.3 ffprobe使用前面的參數可以獲得到對應的key-value,但是閱讀起來因習慣不同所以有的人認為方便,有的人認為不方便,這樣就需要用到ffprobe的print_format參數來進行相應的格式輸出,下面舉幾種輸出的例子:
5.3.1XML格式輸出:

5.3.2ini格式輸出

5.3.3flat格式輸出

5.3.4json格式輸出

5.3.5csv格式輸出

通過各種格式輸出,可以使用對應的繪圖方式繪制出可視化的圖形:
csv格式輸出後使用excel打開表格形式

將表格中的數據以圖形方式繪制出來

圖形繪制出來的時候,可以看到對應的圖形與Elecard Stream Eye基本相同。

5.4 如果只查看音頻流或視頻流,使用select_streams參數即可,例如只查看視頻流的frames信息:

ffprobe -show_frames -select_streams v -ofxml input.mp4

命令行執行後可以看到輸出的信息如下,全部為視頻的frames信息:



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved