1. 視頻音頻格式轉換
Ffmpeg能使用任何支援的格式和協議作為輸入:
*比如你可以輸入YUV檔案:ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
它將要使用如下檔案:
/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V,等等…
*你能輸入原始的YUV420P檔案:ffmpeg -i /tmp/test.yuv /tmp/out.avi
原始的YUV420P檔案包含原始的YUV極性,每幀以Y平面開始,跟隨U和V平面,它們是Y平面水平垂直的一半解析度
*你能輸出原始的YUV420P檔案
ffmpeg -i mydivx.avi -o hugefile.yuv
*你能設定幾個輸入檔案和輸出檔案
ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
上面的命令列轉換音頻檔案a.wav和原始的YUV 視頻檔案 a.yuv到mpeg檔案a.mpeg
*你也能同時轉換音頻和視頻
ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
上面的命令列轉換a.wav的採樣率到22050HZ並編碼為mpeg音頻
*你也能同時編碼到幾種格式並且在輸入資料流和輸出資料流之間建立映射
ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0
上面的命令列轉換一個64Kbits 的a.wav到128kbits的a.mp2 ‘-map file:index’在輸出資料流的順序上定義了那一路輸入資料流是用於每一個輸出資料流的,
轉碼解密的VOB:
ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi
上面的命令列將vob的檔案轉化成avi檔案,mpeg4的視頻和mp3的音頻。注意命令中使用了B幀,所以mpeg4流是divx5相容的。GOP大小是300意味著29.97幀頻下每10秒就有INTRA幀。該映射在音頻語言的DVD轉碼時候尤其有用
2. Ffmpeg使用文法
ffmpeg [[options][`-i' input_file]]... {[options] output_file}...
如果沒有輸入檔案,那麼視音頻捕捉就會起作用。
作為通用的規則,選項一般用於下一個特定的檔案。如果你給 –b 64選項,改選會設定下一個視頻速率。對於原始輸入檔案,格式選項可能是需要的。
預設情況下,ffmpeg試圖儘可能的無損轉換,採用與輸入同樣的音頻視頻參數來輸出。
3.選項
a) 通用選項
-L license
-h 協助
-fromats 顯示可用的格式,編解碼的,協議的。。。
-f fmt 強迫採用格式fmt
-I filename 輸入檔案
-y 覆蓋輸出檔案
-t duration 設定紀錄時間 hh:mm:ss[.xxx]格式的記錄時間也支援
-ss position 搜尋到指定的時間 [-]hh:mm:ss[.xxx]的格式也支援
-title string 設定標題
-author string 設定作者
-copyright string 設定著作權
-comment string 設定評論
-target type 設定目標檔案類型(vcd,svcd,dvd) 所有的格式選項(位元速率,編解碼以及緩衝區大小)自動化佈建 ,只需要輸入如下的就可以了:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
-hq 啟用高品質設定
-itsoffset offset 設定以秒為基準的時間位移,該選項影響所有後面的輸入檔案。該位移被加到輸入檔案的時戳,定義一個正位移意味著相應的流被延遲了 offset秒。 [-]hh:mm:ss[.xxx]的格式也支援
b) 視頻選項
-b bitrate 設定位元速率,預設200kb/s
-r fps 設定幀頻 預設25
-s size 設定幀大小 格式為WXH 預設160X128.下面的簡寫也可以直接使用:
Sqcif 128X96 qcif 176X144 cif 252X288 4cif 704X576
-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編解碼方式。 如果用copy表示原始編解碼資料必須被拷貝。
-sameq 使用同樣視頻品質作為源(VBR)
-pass n 選擇處理遍數(1或者2)。兩遍編碼非常有用。第一遍產生統計資訊,第二遍產生精確的請求的碼率
-passlogfile file 選擇兩遍的紀錄檔案名稱為file
-
c)進階視頻選項
-g gop_size 設定映像組大小
-intra 僅適用幀內編碼
-qscale q 使用固定的視頻量化標度(VBR)
-qmin q 最小視頻量化標度(VBR)
-qmax q 最大視頻量化標度(VBR)
-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
-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 包括了模組名和參數,用空格分開
D)音頻選項
-ab bitrate 設定音頻碼率
-ar freq 設定音頻採樣率
-ac channels 設定通道 預設為1
-an 不使能音頻紀錄
-acodec codec 使用codec編解碼
E)音頻/視頻捕獲選項
-vd device 設定視頻擷取裝置。比如/dev/video0
-vc channel 設定視頻捕獲通道 DV1394專用
-tvstd standard 設定電視標準 NTSC PAL(SECAM)
-dv1394 設定DV1394捕獲
-av device 設定音訊裝置 比如/dev/dsp
F)進階選項
-map file:stream 設定輸入資料流映射
-debug 列印特定調試資訊
-benchmark 為基準測試加入時間
-hex 傾倒每一個輸入包
-bitexact 僅使用位精確演算法 用於編解碼測試
-ps size 設定包大小,以bits為單位
-re 以本地幀頻讀資料,主要用於類比擷取裝置
-loop 迴圈輸入資料流。只工作於映像流,用於ffserver測試