一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

X264使用介紹

 Tech-d 2012-05-15


x264是一個開源的H.264視頻編碼函數(shù)庫。是最好的有損視頻編碼器。

主頁: http://www./developers/x264.html

當(dāng)前版本信息:x264 x86 8bit-depth r2197, x64 8bit-depth r2197. Checked 2012-04-25 14:30 GMT

目錄

 [隱藏]

H.264和x264

H.264是ITU(International Telecommunication Unite 國際通信聯(lián)盟)MPEG(Motion Picture Experts Group 運動圖像專家組)聯(lián)合制定的視頻編碼標(biāo)準(zhǔn)。從1999年開始,到2003年形成草案,最后在2007年定稿有待核實。在ITU的標(biāo)準(zhǔn)里稱為H.264,在MPEG的標(biāo)準(zhǔn)里是MPEG-4的一個組成部分--MPEG-4 Part 10,又叫Advanced Video Codec,因此常常稱為MPEG-4 AVC或直接叫AVC。

H.264編碼能實現(xiàn)非常好的壓縮比,有廣泛的適用碼率(適于從超低碼率低延遲的電話會議到高碼率的BluRay光盤和HDTV碼流),良好的硬件支持(以PSP、iPod和顯卡DXVA為代表)和眾多強(qiáng)大的廠商作后盾。

x264始于2003年,從當(dāng)開源社區(qū)的MPEG4-ASP編碼器Xvid小有所成時開始的,經(jīng)過幾年的開發(fā),特別是Dark Shikari加入開發(fā)后,x264逐漸成為了最好的視頻編碼器。

獲取x264

x264的主頁上只用git提供源代碼。雖然官方網(wǎng)站不提供編譯好的版本,但是有很多人在編譯x264,特別是Win32平臺的編譯版。

我們一般選擇32位的最新版。

此外,可以關(guān)注由@dgwxx維護(hù)的twitter機(jī)器人@264bot,它每半小時檢查一次更新,報告32bit和64bit版本的更新。

命令行界面的x264

我們下載到的x264.exe是一個命令行工具,不需要安裝,隨便放在哪里都能運行。雙擊x264.exe只能看到打開了一個黑色的窗口里在刷著什么,然后就沒了。x264.exe需要在命令行里輸入命令,沒有GUI。

不可否認(rèn)有GUI的工具用來很方便,更容易上手,比如用的最廣泛的[http:// MeGUI],此外還有ripbot、staxrip等GUI。doom9上有[1]都是各種GUI,一一試過來看看自己喜歡什么。MeGUI可以自動更新編碼常用的軟件,作為自動下載的工具倒是不錯。本篇教程主要講解命令行參數(shù),GUI也是調(diào)用同一個x264,因此都用對應(yīng)的選項。

命令行的操作

按Win+R鍵調(diào)出運行,輸入cmd,回車,出現(xiàn)黑底白字的窗口和幾行字,其中有 “C:\Document and Settings\User\>”表示當(dāng)前所在的目錄,后面閃的光標(biāo)代表等待輸入內(nèi)容。

假設(shè)x264.exe在E:\Encoder\文件夾,輸入

>cd /D E:\Encoder

回車

改變當(dāng)前目錄到E:\Encoder了。接下來,輸入

>x264

回車


接下來,不用截圖說明會返回的信息了,而直接粘貼cmd里返回的字符。輸入命令會以“>”提示,看到“>”就代表此行是輸入命令并回車。

我們看到,如果只運行x264,什么都不提供給他,x264會返回一個錯誤。他告訴我們?nèi)鄙佥斎胛募?,并提示我門輸入“x264 --help”會列出選項。照他說的,加--help試試。

>x264 --help

返回

x264 core:104 r1688M 0b36c6d
Syntax: x264 [options] -o outfile infile

Infile can be raw (in which case resolution is required),
  or YUV4MPEG (*.y4m),
  or Avisynth if compiled with support (no).
  or libav* formats if compiled with lavf support (no) or ffms support (yes).
Outfile type is selected by filename:
 .264 -> Raw bytestream
 .mkv -> Matroska
 .flv -> Flash Video
 .mp4 -> MP4
Output bit depth: 8 (configured at compile time)

Options:

  -h, --help                  List basic options
      --longhelp              List more options
      --fullhelp              List all options

Example usage:

      Constant quality mode:
            x264 --crf 24 -o <output> <input>

中間略...

Input/Output:

  -o, --output                Specify output file
      --sar width:height      Specify Sample Aspect Ratio
      --fps <float|rational>  Specify framerate
      --seek <integer>        First frame to encode
      --frames <integer>      Maximum number of frames to encode
      --level <string>        Specify level (as defined by Annex A)
      --quiet                 Quiet Mode

Filtering:

      Filter options may be specified in the name=value format
--vf, --video-filter <filter0>/<filter1>/... Apply video filtering to the input file
      Available filters:
      crop:left,top,right,bottom
      resize:[width,height][,sar][,fittobox][,csp][,method]
      select_every:step,offset1[,...]


這下返回了不少字符。x264先告訴我們他的版本號,再告訴我們他的基本用法是“x264 [options] -o outfile infile”。還提示我們可以輸入“--longhelp”或“--fullhelp”查看詳細(xì)選項或所有的選項。

接著輸入

>x264 --fullhelp

列出了所有選項。

x264.exe的用法是,在命令行里輸入形如

>x264 [--參數(shù)名 參數(shù)值 ...] --output 輸出文件 輸入文件
其中方括號里是可輸入可不輸入的,“...”是可以輸很多個的意思。觀察這個形式,每個參數(shù)名之前要加“--”,空格后跟此參數(shù)名的參數(shù)值;一定要有“--output”并指定輸出文件;一定要指定輸入文件,但前面沒有“--”之類的提示符號。

此外,還有短參數(shù)模式。這是為了簡化某些常用參數(shù)名設(shè)計的。一個“-”加一個字母構(gòu)成一個短參數(shù)名,和與之對應(yīng)的普通參數(shù)名效果一樣。注意此時這個字母區(qū)分大小寫。在--fullhelp列表里,有短參數(shù)的參數(shù)的短參數(shù)都列在此參數(shù)的前面。

實際命令實例:

>x264 --crf 22 --profile main --tune animation --preset medium --b-pyramid none -o psp.mp4 ep01.avs

調(diào)用x264編碼當(dāng)前目錄下的"ep01.avs"文件,輸入"psp.264"。

>"D:\encoder tools\x264.exe" --crf 18 --tune touhou --preset slower -I 24 -o "D:\touhou\out.mkv" "D:\touhou\th9\rec.avi"

這個例子中,x264.exe、和輸入文件都不在當(dāng)前目錄下,也不輸出到當(dāng)前路徑,就要寫完整的路徑,如果有空格就需要在完整的路徑左右加上引號。

在Windows XP和Windows 7中,把文件拖拽到cmd里,cmd會自動把文件的完整路徑寫在命令行上的。

x264的輸入輸出文件類型

在加入了ffms/lavf后,x264可以直接輸入幾乎所有類型的片子,而不是像原來一樣必須借助于avs。下面所講的是輸入輸出的片子類型,除此之外的輸入輸出還有多pass中的stats文件、qp file、量化矩陣和tc file。

  • 輸入:

x264支持輸入的文件類型有raw yuv、y4m、avs和任何可以由ffmslavf打開的文件。raw yuv會用在64位的x264里。有ffms/lavf打開的片子會自動正確的處理vfr問題。avs和ffms/lavf輸入不需要指定片子的分辨率。

  • 輸出:

x264可以輸出沒有封裝的H.264視頻流,擴(kuò)展名是.264;matroska視頻,擴(kuò)展名是.mkv;flash視頻,擴(kuò)展名是.flv;mp4視頻,擴(kuò)展名是.mp4。mkv、mp4和flv可以是vfr的。

x264通過輸出文件的擴(kuò)展名判斷輸出文件類型。

x264的preset和tune系統(tǒng)

x264的參數(shù)繁多,開發(fā)者為了方便使用者、簡化輸入和提出編碼建議,設(shè)計了一套快速調(diào)用參數(shù)的系統(tǒng)。如果沒有特別的需要,請盡量使用preset和tune系統(tǒng)。這套開發(fā)者推薦的參數(shù)比各種道聽途說的參數(shù)更合理。

在使用了preset和tune以后,依然可以指定里面已經(jīng)有的參數(shù)。手動指定的參數(shù)會覆蓋preset和tune里的參數(shù)。

--preset

通過--preset的參數(shù)調(diào)節(jié)編碼速度和質(zhì)量的平衡。

--preset的值有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo。從快到慢,參數(shù)越來越EP。默認(rèn)是medium。

--tune

通過--tune的參數(shù)值指定片子的類型,是和視覺優(yōu)化的參數(shù),或有特別的情況。

--tune的值有

  • film:電影、真人類型;
  • animation:動畫;
  • grain:需要保留大量的grain時用;
  • stillimage:靜態(tài)圖像編碼時使用;
  • psnr:為提高psnr做了優(yōu)化的參數(shù);
  • ssim:為提高ssim做了優(yōu)化的參數(shù);
  • fastdecode:可以快速解碼的參數(shù);
  • zerolatency:零延遲,用在需要非常低的延遲的情況下,比如電視電話會議的編碼。

碼率控制

視頻的碼率直接影響到了片子的編碼質(zhì)量。要想效果好,碼率足夠是最重要的必要條件之一。但是想實現(xiàn)更好的效果和控制文件的體積(碼率)之間始終是一對矛盾。這就需要我們通過實踐,在強(qiáng)大的編碼器的幫助下總結(jié)出合適的碼率,實現(xiàn)盡量好的效果。

x264有4種碼率控制方式,分別是1pass bitrate、crf、qp和2pass bitrate。其中2pass bitrate包含pass bitrate。

1pass bitrate和qp(恒定量化值)一般不推薦使用。

crf

--crf 23 (默認(rèn))

一種根據(jù)片子質(zhì)量自動分配碼率的vbr碼率控制方式。一遍編碼,如果對碼率沒要求請盡量使用crf模式。

可用的值從1到51,越小編碼質(zhì)量越好,碼率越高。一般使用16到24,可以為浮點。

crf并不是恒定質(zhì)量的方式,同一片子同一crf值,其他參數(shù)不同可能碼率和質(zhì)量能差比較大,不同的片子之間就更沒有可比性了。

2pass bitrate

這種方式可以精確的得到想要的平均碼率,2pass代表需要做2次編碼,第一遍編碼x264先分析全片,得到一個stats文件和一個mbtree文件(默認(rèn)使用mbtree)。第二遍編碼以這兩個文件作參考分配合理的碼率。需要特定的碼率(或文件大?。┮欢ㄒ?pass(或多pass)編碼。

除了2pass,還有多pass模式,在之前分析的基礎(chǔ)上再繼續(xù)分析,理論上會使碼率分配更加合理,但實際上2pass已經(jīng)足夠了。

--bitrate 1000 (以1000kbps碼率為例)

>x264 --bitrate 1000 --pass 1 --tune animation --preset slower --stats "1pass.stats" -o NUL input.avs
>x264 --bitrate 1000 --pass 2 --tune animation --preset slower --stats "1pass.stats" -o output.264 input.avs
先輸入第一行,等1pass跑完之后再輸入第二行跑2pass。1pass主要為了得到1pass.stats和1pass.stats.mbtree兩個文件,2pass需要這兩個文件已完成最后的編碼,最后輸出文件。
默認(rèn)情況下,1pass是以“快速”參數(shù)跑的,而不是以指定的參數(shù)跑。因此一般1pass會比2pass的速度快上很多。而這里1pass指定輸出的文件名是NUL,在Windows里,這個文件名是保留的,因此不會有任何輸出的已編碼的文件。
盡量讓1pass和2pass的視頻一致,如果改變了視頻,分析的結(jié)果就會變得比較不準(zhǔn)確。

此外,1pass可以用crf方式跑,而且可以輸出編碼的結(jié)果,也就是說先跑個1pass看看,如果大小和預(yù)想的偏差太多,就再跑個2pass。但由于1pass默認(rèn)用“快速”參數(shù)跑,因此這里的1pass需要加上--slow-firstpass強(qiáng)制x264用我們給的參數(shù)跑。

>x264 --crf 20 --pass 1 --slow-firstpass --tune animation --preset slower --stats "1pass.stats" -o output1pass.264 input.avs
>x264 --bitrate 1000 --pass 2 --tune animation --preset slower --stats "1pass.stats" -o output2pass.264 input.avs
1pass會輸出3個文件:1pass.stats、1pass.stats.mbtree和output1pass.264。前兩個是分析文件,后一個是編碼的結(jié)果。如果對編碼結(jié)果不滿意,則繼續(xù)用分析的結(jié)果跑2pass。
2pass必須用bitrate模式跑,不能用crf跑。

64bit的x264

如果用了64位的Windows Vista或Windows 7,就可以用64位的x264。64位的x264大約能比32位的x264快上10%左右,能節(jié)省的時間還是比較可觀的。但是用AviSynth輸入時,64位的x264只接受64位的AviSynth輸入,32位的x264只接受32位的AviSynth。雖然現(xiàn)在有64位的AviSynth和不少常用的濾鏡,但是大多數(shù)人還是愿意用32位的AviSynth。那么如何用讓64位的x264配合32位的AviSynth呢?

方法是用pipe。用命令行工具(如ffmpeg、mencoder或avs2yuv)打開avs,讓輸出的raw yuv畫面直接輸入給x264,期間不產(chǎn)生中間文件。這個操作也是在命令行里實現(xiàn)的。

用ffmpeg輸入

先下載ffmpeg的Windows編譯版,可以用static link版本。目前ffmpeg在Windows只有32位的編譯版。和x264一樣,ffmpeg放在任何目錄里都能運行,假設(shè)和x264、要進(jìn)行編碼的input.avs放在一個目錄里。

>ffmpeg -i input.avs -f yuv4mpegpipe -an -v 0 - | x264 [options] --demuxer y4m -o output.264 -

先用ffmpeg打開input.avs,并不指定輸出的文件,而是以“-”代替輸出的文件。后面寫“|”,再寫x264,x264的選項和輸出文件寫法不變,但是輸入文件寫“-”。

用mencoder輸入

mencoder有很多有價值的濾鏡,用起來也很方便。libx264可以編譯進(jìn)mencoder本身,和單獨的x264效果一樣。mencoder也可以打開avs文件,pipe給64位的x264。mplayer-ww的命令行版里就帶有mencoder。

同樣假設(shè)mencoder、x264和要編碼的的input.avs(1280x720)在一個目錄里。

>mencoder input.avs -vf format=yv12 -of rawvideo -ovc raw -nosound -o - | x264 [options] --input-res 1280x720 --input-csp yv12 -o output.264 - 

mencoder部分不同,x264部分和用ffmpeg時一樣。

用avs2yuv輸入

avs2yuv本來是為了給linux上wine來用的,因為AviSynth是運行在Windows的,在linux里必須wine avs2yuv來打開avs,再pipe給x264。當(dāng)然也可以用來pipe給64位的x264。

同樣假設(shè)avs2yuv、x264和要編碼的的input.avs在一個目錄里。

>avs2yuv input.avs - | x264 [options] --demuxer y4m -o output.264 -

avs2yuv的輸出格式默認(rèn)是yuv4mpeg,x264用y4m格式解碼即可從中讀取分辨率,所以無須再用--input-res指定分辨率。

以上介紹了3種方法,個人比較傾向于用ffmpeg。2pass的編碼也是像上面所講的方法一樣。

x264壓制的自動化

雖然MeGUI等程序?qū)崿F(xiàn)了x264壓制的批量化,但并無法實現(xiàn)crf 1st pass + bitrate 2nd pass的自動2pass,也無法實現(xiàn)1st pass和2nd pass使用不同avs腳本。

為此SAPikachu編寫了Python腳本encx264,實現(xiàn)了以下功能:

  • 支持1Pass crf + 2Pass bitrate模式,自動獲取crf出來的碼率作為2pass參數(shù)。也可設(shè)定2pass碼率的比例,自動計算2nd pass碼率功能。
  • 自動記錄壓制log。
  • 可自定義多套預(yù)置參數(shù)。
  • 可分別使用不同腳本跑1st和2nd pass。如1st pass使用較快的濾鏡,2nd pass再使用速度慢效果好的濾鏡,犧牲一定精度來提高速度。
  • 支持腳本自動升級最新版。

下載、討論、反饋請前往論壇討論發(fā)布專用貼。

DXVA

參考主條目: DXVA和psp

DXVA(DirectX Video Accelaration)通常被稱為硬解,是在Windows上用顯卡解碼H.264等編碼視頻的方式。AMD的顯卡方面,HD2xxx以上的系列都可以DXVA;nVidia的顯卡方面,GeForce8000以上的系列都可以DXVA。

符合一定條件的H.264編碼的片子才能正常的DXVA。由于H.264的復(fù)雜性,用比較老的CPU解碼720p和1080p通常比較吃力,因此720p和1080p的片子能否DXVA常常成為矛盾的焦點。為了讓大多數(shù)人都能正常的看到片子,建議盡量使用能夠DXVA的參數(shù)壓制。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲欧洲精品一区二区三区| 亚洲第一区二区三区女厕偷拍| 精品人妻一区二区三区在线看| 在线观看日韩欧美综合黄片| 人妻巨大乳一二三区麻豆| 国产又粗又深又猛又爽又黄| 日本人妻精品有码字幕| 中文字幕乱码一区二区三区四区| 欧美一区二区三区五月婷婷| 国产精品日韩精品最新| 福利在线午夜绝顶三级| 日本特黄特色大片免费观看| av国产熟妇露脸在线观看| 亚洲国产一级片在线观看| 青青操视频在线播放免费| 日本少妇三级三级三级| 五月天丁香婷婷狠狠爱| 精品亚洲香蕉久久综合网| 国产极品粉嫩尤物一区二区| 国产日韩熟女中文字幕| 日本男人女人干逼视频| 国产一区二区熟女精品免费| 老熟女露脸一二三四区| 亚洲国产欧美精品久久| 中文字幕乱码免费人妻av| 国产又大又硬又粗又黄| 一区二区三区18禁看| 国产精品久久精品国产| 欧美一级黄片免费视频 | 人人爽夜夜爽夜夜爽精品视频| 欧美又黑又粗大又硬又爽| 欧美自拍系列精品在线| 在线观看那种视频你懂的| 欧美一区二区日韩一区二区| 亚洲中文字幕日韩在线| 91久久精品国产一区蜜臀| 九九热精品视频免费观看| 国产午夜福利片在线观看| 国产a天堂一区二区专区| 亚洲综合天堂一二三区| 国产精品流白浆无遮挡|