一:參數說明
通用選項
能力集列表
-
-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)”
濾鏡選項
高級選項
-
-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