Re: SAP的EPx264压制脚本(2012-03-29更新)
发表于 : 2013-06-16 22:05
非常感谢 就是要这个 呵呵找了半天找不到 斑竹一下子就搞定了 赞一个
首先如果你的2pass已经确定好码率,1pass用crf就没多大意义,而且也不必用这个脚本。ldandy006 写了:大神啊,你能不能介绍一下如何使用啊,特别是一些小白
已下载的是“免Python打包版”
下载后压缩包解压后,得到2个文件夹impls和pyd,3个文件encx264.exe,encx264_targets.py,python31.dll,这些文件需要放到什么位置?
需要把X264的编码器x264.exe放入解压后文件夹内么,需要安装其他什么软件么
比如我D盘根目录有个1080p的视频123.wmv文件和写好的123.avs文件,想压制成720P的123.mkv视频
要求1st pass CRF 20 2nd pass bitrate 2500
应该怎么操作,需要吧视频拖到哪里么,还是直接运行命令行,该怎么写命令行?
代码: 全选
encx264.exe target名字 123.avs 123.mkv 20
应该说,2nd pass用1st pass crf出来的码率这本身就没有用n pass的意义了……SAPikachu 写了:首先如果你的2pass已经确定好码率,1pass用crf就没多大意义,而且也不必用这个脚本。ldandy006 写了:大神啊,你能不能介绍一下如何使用啊,特别是一些小白
已下载的是“免Python打包版”
下载后压缩包解压后,得到2个文件夹impls和pyd,3个文件encx264.exe,encx264_targets.py,python31.dll,这些文件需要放到什么位置?
需要把X264的编码器x264.exe放入解压后文件夹内么,需要安装其他什么软件么
比如我D盘根目录有个1080p的视频123.wmv文件和写好的123.avs文件,想压制成720P的123.mkv视频
要求1st pass CRF 20 2nd pass bitrate 2500
应该怎么操作,需要吧视频拖到哪里么,还是直接运行命令行,该怎么写命令行?
这里假设你要1pass crf,2pass使用1pass的输出码率。请先修改encx264_targets.py使用你的参数添加新target,然后命令行类似这样:
代码: 全选
encx264.exe target名字 123.avs 123.mkv 20
最近的x264版本我没研究过,至少在我写encx264的时候,2pass和crf还是有区别的,2pass的direct temporal明显比1pass crf的要多,说明n pass的stats除了码率控制之外还有一些其它用途。(当然1pass crf+2pass的画质是不是一定比纯1pass crf好这点我是无法确定。。)mawen1250 写了:应该说,2nd pass用1st pass crf出来的码率这本身就没有用n pass的意义了……SAPikachu 写了:首先如果你的2pass已经确定好码率,1pass用crf就没多大意义,而且也不必用这个脚本。ldandy006 写了:大神啊,你能不能介绍一下如何使用啊,特别是一些小白
已下载的是“免Python打包版”
下载后压缩包解压后,得到2个文件夹impls和pyd,3个文件encx264.exe,encx264_targets.py,python31.dll,这些文件需要放到什么位置?
需要把X264的编码器x264.exe放入解压后文件夹内么,需要安装其他什么软件么
比如我D盘根目录有个1080p的视频123.wmv文件和写好的123.avs文件,想压制成720P的123.mkv视频
要求1st pass CRF 20 2nd pass bitrate 2500
应该怎么操作,需要吧视频拖到哪里么,还是直接运行命令行,该怎么写命令行?
这里假设你要1pass crf,2pass使用1pass的输出码率。请先修改encx264_targets.py使用你的参数添加新target,然后命令行类似这样:
代码: 全选
encx264.exe target名字 123.avs 123.mkv 20
所以我上面说了不确定1pass crf + 2pass是不是比crf好。。这样看来crf确实要优胜吧。嘛其实我最近也开始转用纯crf了(mawen1250 写了:有区别不代表更好。
首先就是ABR和CRF都基于相同的rc算法,ABR只是比CRF多了rate tolerance,也就是平均码率的限制。
所以ABR需要猜测对下一帧使用的RF,压出来以后考察平均码率是否满足目标平均码率,然后根据这个进一步调整后续帧的RF。1st pass ABR的结果显然因为这个不断的猜测调整过程而导致出来的rc结果十分不合理(RF不断变化而且幅度通常很大)。
而在n pass中,通过1st pass得到的码率分配情况来为2nd/3rd pass的ABR提供参考的依据,通过猜测并应用更准确的RF值以减少ratetol发挥其强制调整后续帧RF的作用,而这个1st pass的rc结果越合理,对于2nd pass的参考价值也就越大,这也是为什么要使用1st pass CRF + 2nd pass ABR的原因。
而n pass的终极目标,就是让2nd pass跑出来的每帧RF都相同(没有发生码率偏离ratetol的预期而强制调整RF的行为),这样的结果也就是CRF(Constant Rate Factor)。
所以n pass的终极目标就是在满足ABR所设定的目标平均码率及ratetol的情况下让rc结果等于CRF,当然多数情况下都达不到这种理想的情况,而是由于ratetol的作用导致整个视频中帧的RF在不断调整。
如果有人说对比了同码率的CRF和2 pass的结果得出了2 pass更好的结论,那是因为他看到了2 pass时由于没有达到理想情况而产生的副作用——部分帧RF偏高或偏低——RF前后不均匀,当然他如果觉得某些帧更好的话肯定就是看到了RF偏低的那些地方,而这也就意味着有其他地方的RF偏高也就是变得更差。
之所以在2nd/3rd pass中只能设定bitrate而不能设定crf,是因为n pass的存在意义就是ABR,而不是所谓的提高质量(相对于CRF而言)。