ffmpeg、ffprobe、ffplay 常用參數及命令行示例說明


一:參數說明

通用選項

      能力集列表

  • -formats:列出支持的文件格式。
  • -codecs:列出支持的編解碼器。
  • -decoders:列出支持的解碼器。
  • -encoders:列出支持的編碼器。
  • -protocols:列出支持的協議。
  • -bsfs:列出支持的比特流過濾器。
  • -filters:列出支持的濾鏡。
  • -pix_fmts:列出支持的圖像采樣格式。
  • -sample_fmts:列出支持的聲音采樣格式。

常用輸入選項

  • -i filename:指定輸入文件名。
  • -f fmt:強制設定文件格式,需使用能力集列表中的名稱(缺省是根據擴展名選擇的)。
  • -ss hh:mm:ss[.xxx]:設定輸入文件的起始時間點,啟動后將跳轉到此時間點然后開始讀取數據。

對於輸入,以下選項通常是自動識別的,但也可以強制設定。

  • -c codec:指定解碼器,需使用能力集列表中的名稱。
  • -acodec codec:指定聲音的解碼器,需使用能力集列表中的名稱。
  • -vcodec codec:指定視頻的解碼器,需使用能力集列表中的名稱。
  • -b:v bitrate:設定視頻流的比特率,整數,單位bps。
  • -r fps:設定視頻流的幀率,整數,單位fps。
  • -s WxH : 設定視頻的畫面大小。也可以通過掛載畫面縮放濾鏡實現。
  • -pix_fmt format:設定視頻流的圖像格式(如RGB還是YUV)。
  • -ar sample rate:設定音頻流的采樣率,整數,單位Hz。
  • -ab bitrate:設定音頻流的比特率,整數,單位bps。
  • -ac channels:設置音頻流的聲道數目。

常用輸出選項

  • -f fmt:強制設定文件格式,需使用能力集列表中的名稱(缺省是根據擴展名選擇的)。
  • -c codec:指定編碼器,需使用能力集列表中的名稱(編碼器設定為”copy“表示不進行編解碼)。
  • -acodec codec:指定聲音的編碼器,需使用能力集列表中的名稱(編碼器設定為”copy“表示不進行編解碼)。
  • -vcodec codec:指定視頻的編碼器,需使用能力集列表中的名稱(編解碼器設定為”copy“表示不進行編解碼)。
  • -r fps:設定視頻編碼器的幀率,整數,單位fps。
  • -pix_fmt format:設置視頻編碼器使用的圖像格式(如RGB還是YUV)。
  • -ar sample rate:設定音頻編碼器的采樣率,整數,單位Hz。
  • -b bitrate:設定音視頻編碼器輸出的比特率,整數,單位bps。
  • -ab bitrate:設定音頻編碼器輸出的比特率,整數,單位bps。
  • -ac channels:設置音頻編碼器的聲道數目。
  • -an 忽略任何音頻流。
  • -vn 忽略任何視頻流。
  • -t hh:mm:ss[.xxx]:設定輸出文件的時間長度。
  • -to hh:mm:ss[.xxx]:如果沒有設定輸出文件的時間長度的畫可以設定終止時間點。

ffmpeg:

“ffmpeg is a very fast video and audio converter that can also grab from a live audio/video source. It can also convert between arbitrary sample rates and resize video on the fly with a high quality polyphase filter.”

流標識

FFMPEG的某些選項可以對一個特定的媒體流起作用,這種情況下需要在選項后面增加一個流標識。流標識允許以下幾種格式:

  • 流序號。譬如“:1”表示第二個流。
  • 流類型。譬如“:a“表示音頻流,流類型可以和流序號合並使用,譬如“:a:1”表示第二個音頻流。
  • 節目。節目和流序號可以合並使用。
  • 流標識。流標識是一個內部標識號。

假如要設定第二個音頻流為copy,則需要指定-codec:a:1 copy

音頻選項

  • -aframes:等價於frames:a,輸出選項,用於指定輸出的音頻幀數目。
  • -aq:等價於q:a,老版本為qscale:a,用於設定音頻質量。
  • -atag:等價於tag:a,用於設定音頻流的標簽。
  • -af:等價於filter:a,用於設定一個聲音的后處理過濾鏈,其參數為一個描述聲音后處理鏈的字符串。

視頻選項

  • -vframes:等價於frames:v,輸出選項,用於指定輸出的視頻幀數目。
  • -aspect:設置寬高比,如4:3、16:9、1.3333、1.7777等。
  • -bits_per_raw_sample:設置每個像素點的比特數。
  • -vstats:產生video統計信息。
  • -vf:等價於filter:v,用於設定一個圖像的后處理過濾鏈,其參數為一個描述圖像后處理鏈的字符串。
  • -vtag:等價於tag:v,用於設定視頻流的標簽。
  • -force_fps:強制設定視頻幀率。
  • -force_key_frames:顯式控制關鍵幀的插入,參數為字符串,可以是一個時間戳,也可以是一個 “expr:”前綴的表達式。如“-force_key_frames 0:05:00”、“-force_key_frames expr:gte(t,n_forced*5)”

濾鏡選項

-filter_simple 添加簡單濾鏡
-filter_complex FILTER 添加復雜濾鏡

高級選項

  • -re:要求按照既定速率處理輸入數據,這個速率即是輸入文件的幀率。
  • -map:指定輸出文件的流映射關系。例如 “-map 1:0 -map 1:1”要求將第二個輸入文件的第一個流和第二個流寫入到輸出文件。如果沒有-map選項,ffmpeg采用缺省的映射關系。

 

ffprobe:

ffprobe gathers information from multimedia streams and prints it in human- and machine-readable fashion.

 

簡單的說,ffprobe 是一個多媒體流分析工具。它從多媒體流中收集信息,並且以人類和機器可讀的形式打印出來。它可以用來檢測多媒體流的容器類型,以及每一個多媒體流的格式和類型。它可以作為一個獨立的應用來使用,也可以結合文本過濾器執行更復雜的處理。

  • -f format         強制使用某種格式
  • -sexagesimal      時間單元格式化 HOURS:MM:SS.MICROSECONDS
  • -pretty             格式美化
  • -print_format format  格式化(可選值: default, compact, csv, flat, ini, json, xml)
  • -of format         -print_format別名
  • -select_streams stream_specifier 選擇指定流
  • -sections           打印節的結構和信息
  • -show_data          顯示包數據
  • -show_data_hash     顯示包數據哈希值
  • -show_error        顯示文件探測/檢測錯誤
  • -show_format       顯示格式或者容器信息
  • -show_frames        顯示幀信息
  • -show_format_entry entry  根據格式/容器信息顯示指定entry
  • -show_packets       顯示包信息
  • -show_programs      顯示程序信息
  • -show_streams       顯示流信息
  • -show_chapters      顯示章節信息
  • -count_frames       統計每個流的幀數
  • -count_packets      統計每個流的包數
  • -show_program_version  顯示ffprobe版本
  • -show_library_versions  show library versions
  • -show_versions      show program and library versions
  • -show_pixel_formats 顯示像素格式
  • -show_private_data  show private data
  • -private            same as show_private_data
  • -bitexact           force bitexact output
  • -read_intervals read_intervals  set read intervals
  • -default            generic catch all option

ffplayer

FFplay is a very simple and portable media player using the FFmpeg libraries and the SDL library. It is mostly used as a testbed for the various FFmpeg APIs.

  • -x 強制設置視頻顯示窗口的寬度
  • -y 強制設置視頻顯示窗口的高度
  • -S 設置視頻顯示的寬高
  • -fs 強制全屏顯示
  • -an 屏蔽音頻
  • -vn 屏蔽視頻
  • -Sn 屏蔽字幕
  • -ss 根據設置的秒進行定位拖動
  • -t 設置播放視頻/音頻長度
  • -Bytes 設置定位拖動的策略,0為不可拖動,1為可拖動,-1為自動
  • -Nodisp 關閉圖形化顯示窗口
  • -f 強制使用設置的格式進行解析
  • -window_title 設置顯示窗口的標題
  • -af 設置音頻的濾鏡
  • -Codec 強制使用設置的codec進行解碼
  • -autorotate 自動旋轉視頻
  • -ast 設置將要播放的音頻流
  • -vst 設置將要播放的視頻流
  • -sst 設置將要播放的字幕流
  • -Stats 輸出多媒體播放狀態
  • -Fast 非標准化規范的多媒體兼容優化
  • -sync 音視頻同步設置可設置根據音頻視頻進行參考,視頻時間參考,或者外部擴展時間進行參考
  • -autoexit 多媒體播放完畢自動退出ffplay,ffplay默認播放完畢不退出播放器
  • -exitonkeydown 當有按鍵按下事件產生時退出ffplay
  • -exitonmousedown 當有鼠標按鍵事件產生時退出ffplay
  • -loop 設置多媒體文件循環播放次數
  • -framedrop 當CPU資 源占用過高時,自動丟幀
  • -infbuf 設置無極限的播放器buffer,這個選項常見於實時流媒體播放場景
  • -vf 視頻濾鏡設置
  • -acodec 強制使用設置的音頻解碼器
  • -vcodec 強制使用設置的視頻解碼器
  • -scodec 強制使用設置的字幕解碼器

 

二:命令行使用示例

ffmpeg:

//在視頻左上角添加文字

ffmpeg.exe -i test.flv -filter_complex drawtext="fontfile=corbel.ttf:text='Yeah text':fontsize=50:fontcolor=white" test_filter_text.flv

//在視頻中間添加圖片logo

ffmpeg.exe -i test.flv -i pic.png -filter_complex overlay=(main_w-overlay_w-10)/2:(main_h-overlay_h-10)/2 test_filter.flv

//將視頻每秒(幀率每秒一幀)截圖並以frame-001.jpeg frame-002.jpg方式保存

ffmpeg.exe -i test.flv -r 1 -f image2 frame-%03d.jpeg

//將視頻第5秒的圖像截圖並保存為screenshot.jpeg文件

ffmpeg.exe -i test.flv -r 1 -ss 5 -t 1 -f image2 screenshot.jpeg

//從視頻第3秒開始剪切,持續4秒,並保存文件

ffmpeg.exe -ss 00:00:03 -t 00:00:04 -i test.flv -vcodec copy -acodec copy test_cut.flv

//以每秒1幀的幀率將frame-*.jpeg的序列圖片合並成視頻(windows下使用括號內的方式)

ffmpeg -f image2 -pattern_type glob -framerate 1 -i 'frame-*.jpeg' test_compose_image.flv

(  

ffmpeg.exe -f image2  -framerate 1 -i frame-%03d.jpeg test_compose_image.flv

 注:-pattern_type glob requires glob.h.  glob is defined in the POSIX standard and it's not available on Windows by default.

Create/rename your files using sequential file naming image###.jpg then use sequence wildcards like -i image%03d.jpg as input.

)

 

ffprobe:

//顯示文件流中tag並以json格式輸出

ffprobe -print_format json -show_entries stream_tags:format_tags test.flv

 

ffplay:

//以寬320高240的窗口大小打開視頻

ffplay.exe -x 320 -y 240 test.flv

//打開視頻,播放完后自動退出

ffplay.exe -autoexit test.flv

//以指定標題打開窗口播放視頻,並循環播放2遍

ffplay.exe -window_title "我是標題" -loop 2 test.mp4

//播放 雙通道 32K 的 PCM 音頻數據

ffplay.exe -f s16le -ar 32000 -ac 2 test.pcm 

//將視頻以音頻波形可視化顯示出來

ffplay.exe -i test.flv -showmode 1

//為視頻添加字幕(通過濾鏡方式)

ffplay.exe -i test.flv -vf subtitles=test.srt


免責聲明!

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



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