split_aud.pl(http://mod16.org/hurfdurf/?p=33)
Vfr.py - Auto Chapter & QPFile creator and Audio cutter for VFR video (http://forum.doom9.org/showthread.php?t=154535)
其中vfr.py包含了split_aud的所有功能,并且添加了timecode支持和生成chapter(xml or ogm格式)功能
因此,我以vfr.py为蓝本,在保持其原有功能的基础上,借助其对剪切时间点的处理结果,增加一点小功能。
鉴于此脚本是分析Trim语句来实现多种功能,我重命名为TrimApp.py
引用原脚本作者RiCON的话,这个脚本是干什么的:
如何运行python?- 读取一个avs文件的首行非注释的Trim语句
- 读取timecdoe文件,并以此来确定trim语句相关frame的timestamp(如输入timecode为v1格式,则通过tcConv转为v2格式)
- 根据计算出来的trim的timestamp
- 创建mkv兼容的xml chapter文件 或者 OGG格式chapter文件
- 创建qpfile文件,供x264使用
- 剪切、合并音频
trimapp.py -i audio.aac -o cutaudio.mka -f 30000/1001 -t timecodes.txt -c chapters.xml -q qpfile.qpf -vmr --test --frames 9001 trims.avs
-i = 待剪切的音频文件(可以是mkv兼容的任意格式)
-o = 剪切/合并后输出mka文件
-f = 帧率,默认值为30000/1001(接受以下形式的输入"25", "24000/1001" and "30000:1001")
-t = v1或者v2格式的timecode文件以支持vfr片源 (对于v1格式输入,需要tcConv转换为v2)
-c = Chapter文件。假如是xml文件,则输出mkv格式chapter,否则输出OGG格式chapter
-q = 用于x264的QPFile
-v = 显示详细信息
-m = 把剪切出来的音频文件合并
-r = 合并后删除剪切出来的音频文件
--test = 测试模式 (不生成新文件)
--frames = 帧数,v1格式timecode转换为v2格式timecode需要
trims.avs = 从此avs文件中读取首行非注释trim语句
注:
1. -f和-t/--frames互斥使用,-f只用于cfr片源,-t/--frames只用于vfr片源。如果同时指定-f和-t这两个参数,-f会被忽略。
2、--frames只用于-t输入为v1格式timecode的情况。
请到python官网上下载python 2.6版本(要翻墙)。
除此以外,由于调用了windows api,还需要安装一个python的扩展:Python for Windows Extensions
注:RiCON开发该脚本使用了Python3000的环境,而我的mod则使用Python2.6环境。
安装后把python的安装路径加入系统环境变量中。
这样,python脚本就如bat脚本一般使用。类似的还有perl脚本
还需要准备什么工具?
tcConv:脚本内部通过调用tcConv把v1格式timecode转换为v2格式
mkvmerge:脚本使用mkvmerge来分割、合并音频文件,输出mka
beSplit:脚本使用beSplit来分割、合并音频文件,输出aac
我的mod做了什么?
在保持原脚本功能不变的基础上
- 提供aac->aac, ac3->ac3的功能(借助beSplit,因此只支持aac和ac3文件输入)
- 增加 通过trim调整从ts文件抽取出来的ass字幕时轴,以适应剪切后成品。(暂时只支持utf-8编码,unicode编码会乱码)
注:请使用avs的trim来剪ts开头的cm,而不是dgindex,否则失去了头部cm的持续时间信息,字幕就无法调整了
实例:
以下命令在CMD里运行
假设片源为30000/1001的cfr
1.把audio.aac根据trim剪切为数份audio-cutted.split01.mka,...,audio-cutted.split(n).mka
代码: 全选
trimapp.py -i "audio.aac" -o "audio-cutted.mka" "trims.avs"
代码: 全选
trimapp.py -i "audio.aac" -o "audio-cutted.mka" -m "trims.avs"
代码: 全选
trimapp.py -i "audio.aac" -o "audio-cutted.mka" -mr "trims.avs"
代码: 全选
trimapp.py -c "chapter.xml" "trim.avs"
代码: 全选
vfr_mod.py -q "qpfile.qp" "trim.avs"
代码: 全选
trimapp.py -i "audio.aac" -o "audio-cutted.mka" -c "chapter.xml" -q "qpfile.qp" "trim.avs"
7.把audio.aac输出为audio-cutted.aac
代码: 全选
trimapp.py -b -i "audio.aac" -o "audio-cutted.aac" -mr "trims.avs"
8.从ts中抽取出来了sometv.aas,要调整为切过cm后压制的MP4成品时轴sometv.ajust.ass
代码: 全选
trimapp.py --ass "sometv.ass" "trim.avs"
假设片源为FPS的cfr,则以上命令增加参数-f FPS
假如片源为VFR,获取到到timecode文件为timecode_v1.txt,timecode_v2.txt,片源总帧数为FRAMES,则在以上命令中增加参数-t timecode_v2.txt或者-t timecode_v1.txt --frames FRAMES
changlog
2010-9-29: 修正两个bug,添加ac3输出支持。更名为TrimApp.py
long long ago:release。