FFmpeg是比較經典,也是比較流行的多媒體工具庫(demux,mux, decode,encode等等),支持格式也比較豐富,也比較實用。
做多媒體開發的經常都需要使用到各種格式的音視頻對自己的開發成果進行測試。 要收集齊這些音視頻測試文件可不容易,尤其是要精確到profile,比如h264的BP/MP/HP, mpeg4的SP/ASP等等。
這裏就到了轉碼工具出場的時間了, 網上也可以找到不少免費的工具,如、格式工廠,魔影工廠等等。但這些工具基本上都是能進行轉碼,但很難精確到profile level級別。
這時就可以使用咱的FFMpeg,多媒體的轉碼小能手。FFmpeg的功能太多了,這裏就不一一介紹,只說其中一條命令,沒錯,只有一條(怎麼安裝FFmpeg,就不是本小篇的範疇了,客觀問問度娘就知道了)。
ffmpeg -i in.xxx -c:v xxx -profile:v xxx -c:a xxx -profile:a xxx out.xxx
就是這麼簡潔的一條命令,其意義如下所示:
-i in.xxx : 輸入文件
-c:v xxx : 設置輸出文件的視頻格式
-profile:v xxx : 設置輸出視頻格式的profile(數值 參考 avcodec.h 中 FF_PROFILE_XXX 這樣的宏定義)
-c:a xxx : 設置輸出文件的音頻格式
-profile:a xxx : 設置輸出音頻的profile(數值 參考 avcodec.h 中 FF_PROFILE_XXX 這樣的宏定義)
out.xxx : 輸出文件(由後綴名決定輸出文件的格式(即容器格式) )
還有一些音視頻的可選參數:
Video options:
-vframes number 設置輸出多少幀視頻
-r rate 設置輸出視頻的幀率(Hz value(即fps))
-s size 設置輸出視頻的分辨率 (WxH (寬和高中間是字母'x'))
-aspect aspect 設置寬高比 (4:3, 16:9 or 1.3333, 1.7777)
-bits_per_raw_sample number 設置位深度
-vn 禁止輸出視頻(即輸出文件中不包含視頻)
-vcodec codec 設置輸出視頻的格式(等同於 -c:v )
-timecode hh:mm:ss[:;.]ff 設置輸出視頻的起始時間戳
-pass n select the pass number (1 to 3)(沒太明白)
-vf filter_graph set video filters(設置濾波器)
-ab bitrate 設置輸出音頻的比特率(推薦使用: -b:a xxx)
-b bitrate 設置輸出視頻的比特率(推薦使用: -b:v xxx)
-dn disable data(禁止數據,我猜測和 -vn的區別是,這個命令只禁止數據,
但是在文件的header中仍然有視頻流的信息)
Audio options:
-aframes number 設置輸出多少個音頻幀
-aq quality 設置輸出音頻的質量 (codec-specific)
-ar rate 設置輸出音頻的採樣率(sampling rate) (in Hz)
-ac channels 設置輸出音頻的聲道數目
-an 禁止音頻(即輸出文件中無音頻)
-acodec codec 設置輸出音頻的格式(等同於 -c:a )
-vol volume 設置輸出音頻的音量 (256=normal)
-af filter_graph 設置音頻濾波器
Subtitle options:
-s size 設置字幕所在的畫面的分辨率(WxH, 其中寬和高中間是字母'x')
-sn 禁止字幕(即輸出文件中無字幕)
-scodec codec 設置輸出字幕的格式(等同於 -c:s )
-stag fourcc/tag 設置字幕的tag/fourcc
-fix_sub_duration 修正字幕的時長
-canvas_size size 設置字幕畫布的分辨率 (WxH or abbreviation)
-spre preset set the subtitle options to the indicated preset(不太明白)