FFprobe命令參數使用指南


1. ffprobe 是什么 ?

簡單的說,ffprobe 是一個多媒體流分析工具。它從多媒體流中收集信息,並且以人類和機器可讀的形式打印出來。

它可以用來檢測多媒體流的容器類型,以及每一個多媒體流的格式和類型。它可以作為一個獨立的應用來使用,也可以結合文本過濾器執行更復雜的處理。

2. ffprobe 的使用方式

命令行: ffprobe [選項] [‘輸入文件’]

3. ffprobe 可使用的選項

3.1 流指示符

流指示符用來精確的指定一個給定的選項是屬於哪個(些)流。

一個流指示符通常是一個字符串附加到一個選項名的后面,並且以“:”進行分割。例如:-codec:a:1 ac3 包含流指示符 a:1 ,它將匹配第二個音頻流。因此,它將為第二個音頻流指定 ac3 codec。

一個流指示符可以匹配多個流,這樣,給定的選項會被應用到所有的匹配流上。例如:-b:a 128k 中的流指示符將匹配所有的音頻流。

一個空流指示符將匹配所有的流。例如:-codec copy 或 -codec: copy 將拷貝所有的流,而不會對它們重新編碼。

可能的流指示符的形式:

01. ‘stream_index’  匹配具有該索引值的流。例如:-threads:1 4 將為第二個流設置線程數為4
02. ‘stream_type[:stream_index]’
03. stream_type 是下面的其中之一:’v’ 視頻, ’a’ 音頻, ’s’ 字幕, ’d’ 數據,
04. ’t’ 附件。如果給定 stream_index ,它將匹配該類型下的索引號為
05. stream_index 的流,否則,它將匹配該類型的所有流。
06. ‘p:program_id[:stream_index]’
07. 如果給定 stream_index ,它將匹配 id 為 program_id 的 program 下的索
08. 引號為 stream_index 的流,否則,它將匹配該 program 下的所有流。
09. ‘#stream_id or i:stream_id’  使用流 id 進行匹配(例如:MPEG-TS 容器中的 PID )
3.2 通用選項

ff* 工具的通用選項是共享的。(FFplay)

01. ‘-L’    顯示 license
02. ‘-h, -?, -help, --help [arg]’ 打印幫助信息;可以指定一個參數 arg ,如果不指定,只打印基本選項
03. 可選的 arg 選項:
04. long’    除基本選項外,還將打印高級選項
05. ‘full’    打印一個完整的選項列表,包含 encoders, decoders, demuxers, muxers, filters 等的
06. 共享以及私有選項
07. ‘decoder=decoder_name’    打印名稱為 “decoder_name” 的解碼器的詳細信息
08. ‘encoder=encoder_name’    打印名稱為 “encoder_name” 的編碼器的詳細信息
09. ‘demuxer=demuxer_name’    打印名稱為 “demuxer_name” 的 demuxer 的詳細信息
10. ‘muxer=muxer_name’        打印名稱為 “muxer_name” 的 muxer 的詳細信息
11. ‘filter=filter_name’      打印名稱為 “filter_name” 的過濾器的詳細信息
12.  
13. ‘-version’     顯示版本信息
14. ‘-formats’     顯示有效的格式
15. ‘-codecs’      顯示 libavcodec 已知的所有編解碼器
16. ‘-decoders’    顯示有效的解碼器
17. ‘-encoders’    顯示有效的編碼器
18. ‘-bsfs’        顯示有效的比特流過濾器
19. ‘-protocols’   顯示有效的協議
20. ‘-filters’     顯示 libavfilter 有效的過濾器
21. ‘-pix_fmts’    顯示有效的像素格式
22. ‘-sample_fmts’ 顯示有效的采樣格式
23. ‘-layouts’     顯示通道名稱以及標准通道布局
24. ‘-colors’      顯示認可的顏色名稱
25. ‘-hide_banner’ 禁止打印歡迎語;也就是禁止默認會顯示的版權信息、編譯選項以及庫版本信息等
3.3 一些主要選項
01. ‘-f format’    強制使用的格式
02. ‘-unit’        顯示值的單位
03. ‘-prefix’      顯示的值使用標准國際單位制詞頭
04. ‘-byte_binary_prefix’ 對字節值強制使用二進制前綴
05. ‘-sexagesimal’ 時間值使用六十進位的格式 HH:MM:SS.MICROSECONDS
06. ‘-pretty’      美化顯示值的格式。它相當於 "-unit -prefix -byte_binary_prefix -sexagesimal"
07. ‘-of, -print_format writer_name[=writer_options]’
08. 設置輸出打印格式。writer_name 指定打印程序 (writer) 的名稱,writer_options
09. 指定傳遞給 writer 的選項。例如:將輸出打印為 JSON 格式:-print_format json
10. ‘-select_streams stream_specifier’
11. 只選擇 stream_specifier 指定的流。該選項只影響那些與流相關的選項
12. (例如:show_streams, show_packets, 等)。
13. 舉例:只顯示音頻流,使用命令:
14. ffprobe -show_streams -select_streams a INPUT
15. ‘-show_data’ 顯示有效載荷數據,以十六進制和ASCII轉儲。與 ‘-show_packets’ 結合使用,它將
16. dump 包數據;與 ‘-show_streams’ 結合使用,它將 dump codec 附加數據。
17. ‘-show_error’    顯示探測輸入文件時的錯誤信息
18. ‘-show_format’   顯示輸入多媒體流的容器格式信息
19. ‘-show_packets’  顯示輸入多媒體流中每一個包的信息
20. ‘-show_frames’   顯示輸入多媒體流中的每一幀以及字幕的信息
21. ‘-show_streams’  顯示輸入多媒體流中每一個流的信息
22. ‘-show_programs’ 顯示輸入多媒體流中程序以及它們的流的信息
23. ‘-show_chapters’ 顯示格式中存儲的章節信息
24. ‘-count_frames’  計算每一個流中的幀數,在相應的段中進行顯示
25. ‘-count_packets’ 計算每一個流中的包數,在相應的段中進行顯示
26. ‘-show_program_version’   顯示程序版本及配置相關信息
27. ‘-show_library_versions’  顯示庫版本相關信息
28. ‘-show_versions’          顯示程序和庫版本相關信息。相當於同時設置‘-show_program_version’ 和
29. ‘-show_library_versions’
30. ‘-i input_file’           指定輸入文件

4. 打印程序(Writers)

一個 writer 定義了 ffprobe 所使用的輸出格式。

它可以接受一個或多個參數,這些參數以 key=value 的形式指定,以“:”分隔。所有的 writers 都支持以下選項:

1. ‘string_validation, sv’ 設置字符串驗證模式
2. 它可以接受以下值:(默認為 replace)
3. ‘fail’ 當發現無效字符串(UTF-8)序列或代碼點時,立即失敗。這個對於驗證輸入 metadata 非常有用。
4. ‘ignore’ 任何驗證錯誤都將被忽略。
5. ‘replace’ writer 將使用 ‘string_validation_replacement’ 所指定的字符串替代無效的UTF-8序列或者代碼點。
6.  
7. ‘string_validation_replacement, svr’ 設置替代字符串,當 ‘string_validation’ 設置為 ‘replace’ 時使用。

以下為目前可以使用的 writers :

01. 4.1 default
02. 默認格式。按照以下形式打印每個 section :
03. [SECTION]
04. key1=val1
05. ...
06. keyN=valN
07. [/SECTION]
08.  
09. 4.2 compact, csv
10. 緊湊與CSV格式。每個 section 打印在一個單獨的行。如果不指定其他選項,其輸入格式如下:
11. section|key1=val1| ... |keyN=valN
12.  
13. 4.3 Flat
14. 一種自由格式輸出,每一行包含一個明確的 key=value 對。
15.  
16. 4.4 ini
17. INI 格式輸出。
18.  
19. 4.5 json
20. JSON 格式輸出。每一個 section 使用 JSON 符號來打印。
21.  
22. 4.6 xml
23. XML 格式輸出。
24.  
25. 各 writer 可接受的選項,請查閱 ffprobe 文檔

5. ffprobe 使用示例

01. 1) 最簡單的使用方式
02. ffprobe test.mp4
03.  
04. 2) 不顯示歡迎信息
05. ffprobe -hide_banner test.mp4
06.  
07. 3) 以 JSON 格式顯示每個流的信息
08. ffprobe -print_format json -show_streams test.mp4
09.  
10. 4) 顯示容器格式相關信息
11. ffprobe -show_format test.mp4     

更多 ffprobe 選項,可以使用 ffprobe -h 獲取


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM