FFprobe使用指南

來源:互聯網
上載者:User
轉載自:http://www.it165.net/os/html/201404/7862.html
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 將拷貝所有的流,而不會對它們重新編碼。

可能的流指示符的形式:

‘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 的 program 下的索                引號為 stream_index 的流,否則,它將匹配該 program 下的所有流。‘#stream_id or i:stream_id’  使用流 id 進行匹配(例如:MPEG-TS 容器中的 PID )
3.2 通用選項

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

‘-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’ 禁止列印歡迎語;也就是禁止預設會顯示的著作權資訊、編譯選項以及庫版本資訊等
3.3 一些主要選項
‘-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‘-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’  計算每一個流中的幀數,在相應的段中進行顯示‘-count_packets’ 計算每一個流中的包數,在相應的段中進行顯示‘-show_program_version’   顯示程式版本及配置相關資訊‘-show_library_versions’  顯示庫版本相關資訊‘-show_versions’          顯示程式和庫版本相關資訊。相當於同時設定‘-show_program_version’ 和                           ‘-show_library_versions’‘-i input_file’           指定輸入檔案
4. 列印程式(Writers)

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

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

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

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

4.1 default   預設格式。按照以下形式列印每個 section :    [SECTION]    key1=val1    ...    keyN=valN    [/SECTION]4.2 compact, csv   緊湊與CSV格式。每個 section 列印在一個單獨的行。如果不指定其他選項,其輸入格式如下:    section|key1=val1| ... |keyN=valN4.3 Flat  一種自由格式輸出,每一行包含一個明確的 key=value 對。4.4 ini  INI 格式輸出。4.5 json  JSON 格式輸出。每一個 section 使用 JSON 符號來列印。4.6 xml  XML 格式輸出。各 writer 可接受的選項,請查閱 ffprobe 文檔
5. ffprobe 使用樣本
1) 最簡單的使用方式    ffprobe test.mp42) 不顯示歡迎資訊    ffprobe -hide_banner test.mp43) 以 JSON 格式顯示每個流的資訊    ffprobe -print_format json -show_streams test.mp44) 顯示容器格式相關資訊    ffprobe -show_format test.mp4      

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.