ffmpeg使用x264編碼的配置(一)

本文鏈接: http://www.php-oa.com/2009/03/09/ffmpeg_x264.html

注:講實話,有關這些使用的文章真的不錯,我們在這謝謝"SV的邊界"本來我自己還想總結一下的。看來沒有必要了,呵呵,在次多謝"SV的邊界".下面原文

使用ffmpeg進行.264編碼的相關文章比較少,google了一下,特總結如下:

  • qscale的取值可以是0.01-255但實際使用超過50就很糟糕了
  • ffmpeg的cbr模式可以把碼率控制的不錯,但是vbr無法限制最高碼率(雖然有max的設置,但是程序沒有實現)
  • x264標準的封裝是x264+aac in flv或者x264+aac in MP4

接下來說明下ffmpeg命令行的語法規則(本塊內容來自2009-03-02官方文檔):

語法規則結構:

ffmpeg [[infile options][`-i' infile]]... {[outfile options] outfile}...

 

一個最簡單的命令形式:

ffmpeg -i input.avi -b 64k output.avi

 

這個命令把視頻以64k的碼率重編碼。

顯然,輸入文件前面要加一個-i選項下面介紹一些有用的全局參數:

  • -formats 參數。會顯示你機器當前支持的封裝、編碼、解碼器的信息
  • -y參數,會指示ffmpeg覆蓋輸出文件
  • -t 指定視頻流持續的時常,支持以秒爲單位的數字或"時:分:秒[.毫秒]"
  • -fs 指定輸出文件大小的限制
  • -ss 指定開始的時間,和-t的單位一樣
  • -target 直接設定你想要轉成的目標格式,所有的相關設置都會採用內設值,當然也你也可以加上自己要修改的參數。可用的選擇有:
    "vcd", "svcd", "dvd", "dv", "dv50", "pal-vcd", "ntsc-svcd", …
    這個例子把視頻轉換成vcd的格式

     

    
    ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg

接下來介紹視頻選項:

  • -b 指定碼率注意單位是bit/s,所以我們一般要加k,比如 -b 1000k 就是1000kb/s
  • -g 設置組的大小
  • -vframes 指定要編碼的幀數,比如-vframes 1 就是編碼1幀,截圖的時候就這樣寫.
  • -r 指定幀率,默認是25
  • -s 指定圖像分辨率,用wxh的格式,比如320×240
  • -aspect 指定寬高比 可以些16:9這種,也可以寫小數比如1.3333
  • -croptop 指定頂部裁減多少像素,類似的還有-cropleft -cropright -cropbuttom
  • -bt 設置比特率容許的誤差,默認4000k,在第一階段時使用這個參數會告訴碼率控制器能夠偏移平均碼率多遠,這個選項和最大最小碼率無關.設太小了不利於質量
  • -maxrate 和-minrate 指定允許的最大和最小碼率,一般如果要用cbr模式編碼的話會用這個:
    ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
    否則用處不大
  • -vcodec 強制使用某種編碼器
  • -sameq 使用和源文件相同的質量,這個選項是動態碼率的
  • -pass 指定編碼階段,這個只有1和2,第一階段的時候應該不處理音頻,並且把輸出導向空,比如:
    ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NULffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
  • -qscale 使用固定量化因子來量化視頻這個是在vbr模式的,前面有提到,越小質量越好,不要超過50,相關的參數還有-qmin –qmax用來設定最大最小可使用的量化值
  • -qdiff 指定固定量化器因子允許的最大偏差
  • -qblur 指定量化器模糊係數,可用範圍是0.0-1.0越大使得碼率在時間上分配的越平均
  • -qcomp 指定視頻量化器壓縮係數,默認0.5
  • -me_method 指定運動估計方法(motion estimation method),可用的選擇從垃圾到好排列如下:
    zero (0向量)
    phods
    log
    x1
    hex
    umh
    epzs (默認)
    full (完全搜索,很慢又好不到哪裏去)
  • -mbd 設定宏模塊決策,可用的值:
    0 使用mb_cmp,不知道是什麼東西,所以這些參數我參考一下mencoder裏面的
    1 選用需要比特最少的宏塊模式
    2 選用碼率失真最優的宏塊模式
  • -4mv 使用宏塊的4個運動向量,只支持mpeg4
  • -part 使用數據劃分,只支持mpeg4
  • -ilme 強制允許交錯的編碼,只支持mpeg2和mpeg4,你可以選擇用-deinterlace來去交錯

音頻部分:

 

  • -ar 設置採樣頻率,默認44100hz
  • -ab 設置比特率,默認64k
  • -an 禁用音頻錄製
  • -acodec 指定音頻編碼器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章