FFmpeg是用於錄製、轉換和流化音頻和視頻的完整解決方案,一套領先的音/視頻編解碼類庫。php
FFmpeg的官方網址是 http://ffmpeg.mplayerhq.hu/ 。html
中文Wiki是 http://www.ffmpeg.com.cn/ ,資料不少。算法
因爲其免費開源性,遂決定就用它來進行視頻格式的壓縮轉換啦。首先再來囉嗦一點兒基本的FFmpeg主主要組成部分:服務器
1). libavcodec: 一個包含了全部FFmpeg音視頻編解碼器的庫。ide
2). libavformat: 一個包含了全部的普通音視格式的解析器和產生器的庫。優化
三個實例程序(這三個實例基本能夠做爲API使用手冊):編碼
ffmpeg:命令行的視頻格式轉換程序。命令行
ffplay:視頻播放程序。(須要SDL支持)code
ffserver:多媒體服務器orm
瞭解了它的大致組織結構,就明確了ffmpeg固然是我在尋找視頻格式壓縮轉換的第一選擇!
對於Linux上的用戶,能夠參考
http://www.ffmpeg.com.cn/index.php/Ffmpeg%E7%BC%96%E8%AF%91%E8%AF%A6%E8%A7%A3
對於Windows用戶,可參考
http://bbs.chinavideo.org/viewthread.php?tid=1897&extra=page%3D1 或
http://blog.sina.com.cn/s/blog_4673bfa501008xie.html
總之編譯是個很複雜的過程,咱們仍是加快速度,來領略ffmpeg的風采。
在命令行下,鍵入ffmepg.exe -h ,以看其幫助,好傢伙,其參數之多,還真是以爲無從下手啊,這麼多參數,又該如何正確的設置呢?
因而連Google帶使用摸索,將ffmpeg的參數在這裏作一簡要整理和記錄,以備往後使用時查看方便。
基本使用方式:ffmpeg [[options][`-i' input_file]] {[options] output_file}
a) 通用選項
-L license
-h 幫助
-fromats 顯示可用的格式,編解碼的,協議的。。。
-f fmt 強迫採用格式fmt
-i filename 輸入文件
-y 覆蓋輸出文件(即若是test.***文件已經存在的話,不經提示就覆蓋掉了)
-t duration 設置紀錄時間 hh:mm:ss[.xxx]格式的記錄時間也支持
-ss position 搜索到指定的時間 [-]hh:mm:ss[.xxx]的格式也支持。使用-ss參數的做用,能夠從指定時間點開始轉換任務,-ss後的時間單位爲秒
-title string 設置標題(好比PSP中顯示影片的標題)
-author string 設置做者
-copyright string 設置版權
-comment string 設置評論
-target type 設置目標文件類型(vcd,svcd,dvd) 全部的格式選項(比特率,編解碼以及緩衝區大小)自動設置 ,只須要輸入以下的就能夠了:ffmpeg -i myfile.avi -target vcd vcd.mpg
-hq 激活高質量設置
-itsoffset offset 設置以秒爲基準的時間偏移,該選項影響全部後面的輸入文件。該偏移被加到輸入文件的時戳,定義一個正偏移意味着相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支持。
b) 視頻選項
-b bitrate 設置比特率,缺省200kb/s
-vb bitrate set bitrate (in bits/s)
-vframes number 設置要編碼多少幀
-r fps 設置幀頻 缺省25
-s size 設置幀大小 格式爲W*H 缺省160X128.也能夠直接使用簡寫,也認:Sqcif qcif cif 4cif 等
-aspect aspect 設置橫縱比 4:3 16:9 或 1.3333 1.7777
-croptop size 設置頂部切除帶大小 像素單位
-cropbottom size -cropleft size -cropright size
-padtop size 設置頂部補齊的大小 像素單位
-padbottom size -padleft size -padright size -padcolor color 設置補齊條顏色(hex,6個16進制的數,紅:綠:蘭排列,好比 000000表明黑色)
-vn 不作視頻記錄
-bt tolerance 設置視頻碼率容忍度kbit/s (固定偏差)
-maxrate bitrate設置最大視頻碼率容忍度 (可變偏差)
-minrate bitreate 設置最小視頻碼率容忍度(可變偏差)
-bufsize size 設置碼率控制緩衝區大小
-vcodec codec 強制使用codec編解碼方式,如-vcodec xvid 使用xvid壓縮 若是用copy表示原始編解碼數據必須被拷貝。
-sameq 使用一樣視頻質量做爲源(VBR)
-pass n 選擇處理遍數(1或者2)。兩遍編碼很是有用。第一遍生成統計信息,第二遍生成精確的請求的碼率
-passlogfile file 選擇兩遍的紀錄文件名爲file
c)高級視頻選項
-g gop_size 設置圖像組大小 這裏設置GOP大小,也表示兩個I幀之間的間隔
-intra 僅適用幀內編碼
-qscale q 使用固定的視頻量化標度(VBR) 以<q>質量爲基礎的VBR,取值0.01-255,約小質量越好,即qscale 4和-qscale 6,4的質量比6高 。此參數使用次數較多,實際使用時發現,qscale是種固定量化因子,設置qscale以後,前面設置的-b好像就無效了,而是自動調整了比特率。
-qmin q 最小視頻量化標度(VBR) 設定最小質量,與-qmax(設定最大質量)共用
-qmax q 最大視頻量化標度(VBR) 使用了該參數,就能夠不使用qscale參數
-qdiff q 量化標度間最大誤差 (VBR)
-qblur blur 視頻量化標度柔化(VBR)
-qcomp compression 視頻量化標度壓縮(VBR)
-rc_init_cplx complexity 一遍編碼的初始複雜度
-b_qfactor factor 在p和b幀間的qp因子
-i_qfactor factor 在p和i幀間的qp因子
-b_qoffset offset 在p和b幀間的qp誤差
-i_qoffset offset 在p和i幀間的qp誤差
-rc_eq equation 設置碼率控制方程 默認tex^qComp
-rc_override override 特定間隔下的速率控制重載
-me method 設置運動估計的方法 可用方法有 zero phods log x1 epzs(缺省) full
-dct_algo algo 設置dct的算法 可用:
0 FF_DCT_AUTO 缺省的DCT
1 FF_DCT_FASTINT
2 FF_DCT_INT
3 FF_DCT_MMX
4 FF_DCT_MLIB
5 FF_DCT_ALTIVEC
-idct_algo algo 設置idct算法。可用的有:
0 FF_IDCT_AUTO 缺省的IDCT
1 FF_IDCT_INT
2 FF_IDCT_SIMPLE
3 FF_IDCT_SIMPLEMMX
4 FF_IDCT_LIBMPEG2MMX
5 FF_IDCT_PS2
6 FF_IDCT_MLIB
7 FF_IDCT_ARM
8 FF_IDCT_ALTIVEC
9 FF_IDCT_SH4
10 FF_IDCT_SIMPLEARM
-er n 設置錯誤殘留爲n
1 FF_ER_CAREFULL 缺省
2 FF_ER_COMPLIANT
3 FF_ER_AGGRESSIVE
4 FF_ER_VERY_AGGRESSIVE
-ec bit_mask 設置錯誤掩蔽爲bit_mask,該值爲以下值的位掩碼 1 FF_EC_GUESS_MVS (default=enabled) 2 FF_EC_DEBLOCK (default=enabled)
-bf frames 使用frames個B 幀,支持mpeg1,mpeg2,mpeg4(即若是-bf 2的話,在兩個非b幀中間隔的b幀數目爲2,即IBBPBBPBBP結構)
-mbd mode 宏塊決策
0 FF_MB_DECISION_SIMPLE 使用mb_cmp
1 FF_MB_DECISION_BITS 2 FF_MB_DECISION_RD
-4mv 使用4個運動矢量 僅用於mpeg4
-part 使用數據劃分 僅用於mpeg4
-bug param 繞過沒有被自動監測到編碼器的問題
-strict strictness 跟標準的嚴格性
-aic 使能高級幀內編碼 h263+
-umv 使能無限運動矢量 h263+
-deinterlace 不採用交織方法
-interlace 強迫交織法編碼 僅對mpeg2和mpeg4有效。當你的輸入是交織的而且你想要保持交織以最小圖像損失的時候採用該選項。可選的方法是不交織,可是損失更大
-psnr 計算壓縮幀的psnr
-vstats 輸出視頻編碼統計到vstats_hhmmss.log
-vhook module 插入視頻處理模塊 module 包括了模塊名和參數,用空格分開
-bitexact 使用標準比特率
-max_qdiff 視頻中全部楨(包括i/b/P)的最大Q值差距
-b_qfactor 表示i/p與B的Q值比例因子,值越大B楨劣化越嚴重
-b_qoffset 表示1/p與B的Q值比例的偏移量,值越大B楨劣化越嚴重.若是大於0,那麼下一個B的Q=前一個P的Q乘以b_quant_factor再加上offset,若是小於0,則B的Q=負的normal_Q乘以factor加上offset.
-i_qfactor p和i的Q值比例因子,越接近1則P越優化.
-i_qoffset p和i的Q的偏移量
D)音頻選項
-ab bitrate 設置音頻碼率
-ar freq 設置音頻採樣率
-ac channels 設置通道 缺省爲1,即單通道
-an 不使能音頻紀錄
-acodec codec 使用codec編解碼 如:-acodec AAC 使用AAC音頻編碼