X264使用指南

x264是一个开源的H.264视频编码器库。是目前最好的有损视频编码器。

基本用法是

x264 [options]-o outfile infile

主页: http://www.videolan.org/developers/x264.html

目录

 [隐藏] 
  • 1 H.264和x264
  • 2 获取x264
  • 3 命令行界面的x264
  • 4 命令行的操作
  • 5 64bit的x264
    • 5.1 用ffmpeg输入
    • 5.2 用mencoder输入
    • 5.3 用avs2yuv输入
  • 6 艺搜参考

[编辑]H.264和x264

H.264是ITU(International Telecommunication Unite 国际通信联盟)和MPEG(Motion Picture Experts Group 运动图像专家组)联合制定的视频编码标准。在ITU的标准里称为H.264,在MPEG的标准里是MPEG-4的一个组成部分:MPEG-4 Part 10,又叫Advanced Video Codec,因此常常称为MPEG-4 AVC或直接叫AVC。

H.264编码能实现非常好的压缩比,有广泛的适用码率(适于从超低码率低延迟的电话会议到高码率的BluRay光盘和HDTV码流),良好的硬件支持(以PSP、iPod和显卡DXVA为代表)和众多强大的厂商作后盾。

[编辑]获取x264

有很多人在编译x264,特别是Win32平台的编译版。

  • x264.nl
  • 06_taro Mod
  • jeeb编译版
  • komisar编译版
  • rack编译版,关注Current Patches, Where to get them, How they affect speed/output的新帖
  • VFR Maniac编译版
  • xvidvideo.ru编译版
  • MythCreator的编译版
  • roozhou的支持DirectShow输入的版本。
  • 还有doom9上的Current Patches, Where to get them, How they affect speed/output和doom10上的Getting the latest x264,都会有最新的编译版。

[编辑]命令行界面的x264

我们下载到的x264.exe是一个命令行工具,不需要安装,x264.exe需要在命令行里输入命令,没有GUI。

不可否认有GUI的工具用来很方便,更容易上手,比如用的最广泛的MeGUI,此外还有ripbot、staxrip等GUI。MeGUI可以自动更新编码常用的软件,作为自动下载的工具倒是不错。本教程主要讲解命令行参数,GUI也是调用同一个x264,因此都用对应的选项。

[编辑]命令行的操作

输入“x264 --help”会显示帮助信息。

输入“--longhelp”或“--fullhelp”查看详细选项或所有的选项。

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

>x264 [--参数名 参数值 ...] --output 输出文件 输入文件 

其中方括号里是可选的,“...”是可以输很多个的意思。每个参数名之前要加“--”,空格后跟此参数名的参数值;一定要有“--output”指定输出文件;一定要指定输入文件,但前面没有“--”之类的提示符号。

此外,还有短参数模式。这是为了简化某些常用参数名设计的。一个“-”加一个字母构成一个短参数名,和与之对应的普通参数名效果一样。注意此时这个字母区分大小写。在--fullhelp列表里,有短参数的参数其相应的短参数都列在此参数的前面。

实际命令实例:

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

调用x264编码当前目录下的"input.avs"文件,输出"output.264"。

如果文件路径有空格需要加上引号。

在Windows XP和Windows 7中,可以直接把输入文件拖拽到cmd里。

[编辑]64bit的x264

如果用了64位的Windows Vista或Windows 7,就可以用64位的x264。64位的x264大约能比32位的x264快上10%左右。但是用AviSynth输入时,64位的x264只接受64位的AviSynth输入,32位的x264只接受32位的AviSynth。虽然现在有64位的AviSynth和不少常用的滤镜,但是大多数人还是愿意用32位的AviSynth。如何让64位的x264配合32位的AviSynth呢?

方法是用pipe。用命令行工具(如ffmpeg、mencoder或avs2yuv)打开avs,让输出的raw yuv画面直接输入给x264,期间不产生中间文件。这个操作也是在命令行里实现的。

[编辑]用ffmpeg输入

先下载ffmpeg的Windows编译版(参见FFmpeg(Windows版)),可以用static link版本。目前ffmpeg在Windows上只有32位的编译版。和x264一样,ffmpeg放在任何目录里都能运行,假设和x264、要进行编码的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可以编译进mencoder本身,和单独的x264效果一样。mencoder也可以打开avs文件,pipe给64位的x264。mplayer-ww的命令行版里就带有mencoder。

同样假设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。当然也可以用来pipe给64位的x264。

同样假设avs2yuv、x264和要编码的的input.avs在一个目录里。

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

avs2yuv的输出格式默认是yuv4mpeg,x264用y4m格式解码即可从中读取分辨率,所以无须再用--input-res指定分辨率。

以上介绍了3种方法,个人比较倾向于用ffmpeg。2pass的编码也是像上面所讲的方法一样。

[编辑]艺搜参考

H.264与MP4

你可能感兴趣的:(X264使用指南)