自用的x264压制脚本(8/19更新)

某晚上在某EP群搅流基术交流技术时获得强烈反响,于是稍微改进下就贴上来了。

 

脚本主要功能:
* 支持1Pass crf + 2Pass bitrate模式,自动获取crf出来的码率作为2pass参数
* 自动记录压制log
* 多target支持,脚本内可定义多套预置参数

代码 | 代码打包下载 | 免Python打包版

(脚本需求Python 3

更新日志:

 

## 2011-08-19

* Bug修复
* 如在参数中指定音频,则在1pass自动禁用以防止错误(可使用–1pass-same-extra-args禁用此行为)

## 2011-08-15
* 任务系统显示增强
^ 控制台标题栏显示整体及运行中任务进度
^ 任务完成后在信息输出中显示码率及fps

## 2011-08-12
* 以彩色输出任务列表
* 修复:1pass任务有时会在完成时卡死

## 2011-08-05
* 修复任务系统与额外参数的冲突

## 2011-08-04
* 新增任务系统,默认可同时运行两个1pass任务,并于所有1pass完成后再逐个运行2pass任务。简单命令说明请参考encx264.py !task help
* 可于target内指定x264路径,可参考sample设置
* 本版本无法从旧版自动更新,请下载完整版

## 2011-04-11
* 新参数:–inFile-2pass * :2pass时使用另一个avs脚本
* 参数现在对大小写不敏感了

## 2011-03-15
* 默认不记录压制进度,减小log体积

## 2011-03-14
* 支持指定x264优先级
* 支持1pass压制,把target内的2pass参数删除即可
* 支持脚本自动更新

## 2011-03-06
* 可直接在命令行附加x264参数

## 2011-03-03
* 修正路径内不能包含空格的问题

基本用法:
下载后放到x264目录,然后使用以下格式执行命令即可开始压制:

 
    encx264.py <target> xxxx.avs xxxx.mp4 <crf> --tc ""

其中<target>为脚本内定义的target名字,后面的–tc ""是禁用输入timecode(因为我做的片子全部是VFR,为了偷懒脚本默认会使用脚本目录下的timecode.txt作为输入timecode,如果找不到就会报错)
target的定义方法请参考脚本内的现有target,注意花括号参数会在运行时替换为实际值。最终传给x264的参数由公共参数和target特定参数组成。
脚本可选参数:

–bitrate *:强制指定码率,适用于1pass不是crf的target
–sar *:指定sar,注意如果target内没有default_sar,不在命令行指定sar会报错
–ref *:指定ref,如忽略脚本会使用target指定的default_ref
–pass 2:跳过1pass,如之前用脚本运行过1pass,码率会从记录文件内读取,否则需要用–bitrate指定码率
–tc "xxxx.txt":指定输入timecode,忽略的话脚本会使用avs目录下的timecode.txt,找不到就会报错。如要禁用输入timecode,指定–tc ""
–bitrate-ratio *:2pass和1pass的码率比例,默认为1.0(即使用一样的码率)
–priority [idle|below_normal|normal|above_normal|high]:指定x264进程优先级
–inFile-2pass "xxxxx.avs":2pass时使用另一个avs脚本
— [参数]:在–后面的所有参数都会直接添加到x264命令行,例:
encx264.py <….> — –vf resize:640×480

任务系统:

默认可同时运行两个1pass任务,并于所有1pass完成后再逐个运行2pass任务。
添加任务: encx264.py !task add <参数>
(如:encx264.py !task add mkv_720p avs.avs video.mp4 20 –tc "")
清空任务: encx264.py !task clear
执行任务: encx264.py !task run

Leave a Reply

Your email address will not be published. Required fields are marked *