X264用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
建议你看一下,也许有帮助。
/doc/%E5%88%87%E8%BE%B9%E4%B8%8EResize
准确的说应该是天地有雪爱用这种720x540的分辨率,和龙族的部分人也爱用,就算是PAL的也不靠谱,但并不代表就是可靠的,当然720x544和这性质一样:
引用一下:
应当注意的是,720*540的做法不推荐应用到普通4:3的片子中。毕竟根据“纵向分辨率对人眼影响最大”(因为电视机的扫描线是横着扫描的)理论,改变纵向分辨率不是推荐的做法。当然,也有人推荐这种做法,原因是,其只扩大不缩小的方法可以减少Resize过程中细节的损失量(此说法尚未找到理论依据的支持)。
楼主,这个问题你可以这么考虑。
假如,不论你压什么片子,都给一样的码率,这显然是不合理的。
那么究竟要给多少码率是合理的呢?
这显然我们说了不算,是编码器说了算。
x264给了我们一个比较好的得到合理码率的途径,即crf模式
所以1pass用crf模式跑,是为了得到固定crf值下的码率以及1pass的stats文件
此时我们拿到了“相对合理”的码率
如果这个码率在可接受范围内,那么遍可以直接用这个码率出2pass成品
如果这个码率偏高,可以考虑适当降低一些再出2pass
此时的2pass并不是固定码率,因为有了1pass的stats文件的码率曲线分布
我平常压片子的时候,是1pass crf17得到的码率x0.9作为2pass的码率
crf+aq效果很好。但精确控制码率很困难,最好用2pass模式,1st pass crf,2nd pass bitrate
直接1pass crf+2pass bitrate吧
如何进行1Pass CRF然后2Pass Bitrate,貌似没有人发过教程
由 gamma6256 ? 2011-06-26 8:51
最近一直用Crf压片,但码率很难控制,看到有1Pass CRF然后2Pass Bitrate的压制方法,但苦于找不到具体步骤,还请大侠们多多指教。
是不是官方的X264编码器不能实现呢?是不是Megui无法直接用这样压制只有命令行呢?
置顶的那个自动1pass crf,2pass 获取1pass的码率进行abr的脚本你没看到么..
官方x264命令行肯定可以;megui我记得也可以的,不过当时只会Automatic 2pass,关键也是分2次不同的任务queue进去分开压即可
命令行分2次压即可
代码: 全选
@cd /d "%~dp0"
x264 -p1 --stat "XXX.stat" --crf XX [option] -o "%~dpn1_p1.mp4" "%~1"
@pause
----
@cd /d "%~dp0"
x264 -p2 --stat "XXX.stat" -B XXXX [option] -o "%~dpn1_p2.mp4" "%~1"
@pause
注意一般pass 1 都加上--slow-firstpass这个参数。
pass 1压完看下视频是否满足自己要求,不满意就继续
命令行的crf+abr分开跑2pass,简单说就是,先命令行进入x264.exe所在的目录,然后按照如下的写法写
1pass-crf
x264.exe --pass 1 --stats "xxx.stats" --crf xx 省略中间的参数 --output "你要输出的
文件(通常喜欢null)" "你要输入的文件(通常是avs)"
一般1pass输出的比较常见设置为null,也就是不输出1pass的视频,只出stats,跑出码率曲线,看看码率分布,方便2pass进行精确判断。
1pass时候默认以ref=1,no-8x8dct,subme=2,me=dia,partition i4x4这样的极低参数跑的,如果希望1pass加强参数的话使用--slow-firstpass这个参数
2pass-abr
x264.exe --pass 2 --stats "xxx.stats" --bitrate xxxx 中间参数省略 --output "你输出的最终成品" "输入文件"
附注:1pass和2pass不要求严格参数严格相同,所以说如果是为了跑出2pass文件的话可以使用低参数跑1pass以提高速度。不过一定要注意的是会影响到帧类型的一些选项(小白不知道怎么表述大概说一下,菊苣们勿拍)是要求1pass和2pass严格一致的,比如b帧数量,weightp,b-adapt,p-pyramid,keyint和scenecut要求一致,rc-lookahead不一样貌似不会报错但是会2pass的值会无视你的设定和1pass一样(貌似)
附注2:如果输入是avs的话,1pass和2pass的avs允许不完全一致(一般来说应该是只要没有改动帧率和帧数就ok),换句话说可以在1pass的时候使用一些不怎么疼的滤镜提高出stats的速度,2pass的时候换EP滤镜出片这种(EP滤镜啥的完全就是AMD的杯具啊泪目。。
megui的话我记得貌似在custom command line那个位置加上pass之后貌似也行来着,不过要手动加stats文件然后2个pass要分开跑好像(道听途说,自己没做过),看着觉得麻烦所以就没试过了。lz有兴趣可以试试看
使用介绍
命令行界面的x264
我们下载到的x264.exe是一个命令行工具,不需要安装,随便放在哪里都能运行。双击x264.exe只能看到打开了一个黑色的窗口里在刷着什么,然后就没了。x264.exe需要在命令行里输入命令,没有GUI。
不可否认有GUI的工具用来很方便,更容易上手,比如用的最广泛的MeGUI,此外还有ripbot、staxrip等GUI。doom9上有都是各种GUI,一一试过来看看自己喜欢什么。MeGUI可以自动更新编码常用的软件,作为自动下载的工具倒是不错。本文主要讲解命令行参数,GUI也是调用同一个x264,因此都用对应的选项。
基本用法
x264.exe的用法是,在命令行里输入形如
>x264 [--参数名 参数值 ...] --output 输出文件 输入文件
其中方括号里是可输入可不输入的,“...”是可以输很多个的意思。观察这个形式,每个参数名之前要加“--”,空格后跟此参数名的参数值;一定要有“--output”并指定输出文件;一定要指定输入文件,但前面没有“--”之类的提示符号。
此外,还有短参数模式。这是为了简化某些常用参数名设计的。一个“-”加一个字
母构成一个短参数名,和与之对应的普通参数名效果一样。注意此时这个字母区分大小写。
要查看x264的帮助,输入x264 --help。输入x264 --longhelp查看更详细的帮助,--fullhelp是查看全部帮助
实际命令实例:
>x264 --crf 22 --profile main --tune animation --preset medium --b-pyramid none -o psp.264 ep01.avs
调用x264编码当前目录下的"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、和输入文件都不在当前目录下,也不输出到当前路径,就要写完整的路径,如果有空格就需要在完整的路径左右加上引号。
在Windows XP和Windows 7中,把文件拖拽到cmd里,cmd会自动把文件的完整路径写在命令行上的。[1]
输入输出文件类型
在加入了ffms/lavf后,x264可以直接输入几乎所有类型的片子,而不是像原来一样必须借助于avs。下面所讲的是输入输出的片子类型,除此之外的输入输出还有多pass中的stats文件、qp file、量化矩阵和tc file。
输入:
x264支持输入的文件类型有raw yuv、y4m、avs和任何可以由ffms或lavf打开的文件。raw yuv会用在64位的x264里。有ffms/lavf打开的片子会自动正确的处理vfr问题。avs和ffms/lavf输入不需要指定片子的分辨率。
输出:
x264可以输出没有封装的H.264视频流,扩展名是.264;matroska视频,扩展名是.mkv;flash视频,扩展名是.flv;mp4视频,扩展名是.mp4。mkv、mp4和flv可以是vfr的。
x264通过输出文件的扩展名判断输出文件类型。[1]
preset和tune系统
x264的参数繁多,开发者为了方便使用者、简化输入和提出编码建议,设计了一套快速调用参数的系统。如果没有特别的需要,请尽量使用preset和tune系统。这套开发者推荐的参数比各种道听途说的参数更合理。
在使用了preset和tune以后,依然可以指定里面已经有的参数。手动指定的参数会覆盖preset和tune里的参数。
--preset
通过--preset的参数调节编码速度和质量的平衡。
--preset的值有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo。从快到慢,参数越来越EP。默认是medium。
--tune
通过--tune的参数值指定片子的类型,是和视觉优化的参数,或有特别的情况。
--tune的值有
film:电影、真人类型;
animation:动画;
grain:需要保留大量的grain时用;
stillimage:静态图像编码时使用;
psnr:为提高psnr做了优化的参数;
ssim:为提高ssim做了优化的参数;
fastdecode:可以快速解码的参数;
zerolatency:
零延迟,用在需要非常低的延迟的情况下,比如电视电话会议的编码。
码率控制
视频的码率直接影响到了片子的编码质量。要想效果好,码率足够是最重要的必要条件之一。但是想实现更好的效果和控制文件的体积(码率)之间始终是一对矛盾。这就需要我们通过实践,在强大的编码器的帮助下总结出合适的码率,实现尽量好的效果。
x264有4种码率控制方式,分别是1pass bitrate、crf、qp和2pass bitrate。其中2pass bitrate包含npass bitrate。
1pass bitrate和qp(恒定量化值)一般不推荐使用。
crf
--crf 23 (默认)
一种根据片子质量自动分配码率的vbr码率控制方式。一遍编码,如果对码率没要求请尽量使用crf模式。
可用的值从1到51,越小编码质量越好,码率越高。一般使用16到24,可以为浮点。
crf并不是恒定质量的方式,同一片子同一crf值,其他参数不同可能码率和质量能差比较大,不同的片子之间就更没有可比性了。
2pass bitrate
这种方式可以精确的得到想要的平均码率,2pass代表需要做2次编码,第一遍编码x264先分析全片,得到一个stats文件和一个mbtree文件(默认使用mbtree)。第二遍编码以这两个文件作参考分配合理的码率。需要特定的码率(或文件大小)一定要用2pass(或多pass)编码。
除了2pass,还有多pass模式,在之前分析的基础上再继续分析,理论上会使码率分配更加合理,但实际上2pass已经足够了。
--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需要这两个文件已完成最后的编码,最后输出文件。
默认情况下,1pass是以“快速”参数跑的,而不是以指定的参数跑。因此一般1pass会比2pass的速度快上很多。而这里1pass指定输出的文件名是NUL,在Windows里,这个文件名是保留的,因此不会有任何输出的已编码的文件。
尽量让1pass和2pass的视频一致,如果改变了视频,分析的结果就会变得比较不准确。
此外,1pass可以用crf方式跑,而且可以输出编码的结果,也就是说先跑个1pass看看,如果大小和预想的偏差太多,就再跑个2pass。但由于1pass默认用“快速”参数跑,因此这里的1pass需要加上--slow-firstpass强制x264用我们给的参数跑。
>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。前两个是分析文件,后一个是编码的结果。如果对编码结果不满意,则继续用分析的结果跑2pass。
2pass必须用bitrate模式跑,不能用crf跑。