cunhan
核心会员
核心会员
帖子: 214
注册时间: 2010-09-20 22:09

根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2010-09-20 22:16

在网上找到两个非常方便的剪切音频脚本:
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的话,这个脚本是干什么的
- 读取一个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官网上下载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"
2.把audio.aac根据trim剪切并合并

代码: 全选

trimapp.py -i "audio.aac" -o "audio-cutted.mka" -m "trims.avs"
3.剪切合并audio.aac后删除split文件

代码: 全选

trimapp.py -i "audio.aac" -o "audio-cutted.mka" -mr "trims.avs"
4.输出chapter文件

代码: 全选

trimapp.py -c "chapter.xml" "trim.avs"
5.输出qpfile

代码: 全选

vfr_mod.py -q "qpfile.qp" "trim.avs"
6.剪切合并音频,并输出chapter、qpfile

代码: 全选

trimapp.py -i "audio.aac" -o "audio-cutted.mka" -c "chapter.xml" -q "qpfile.qp" "trim.avs"
可见,剪切合并音频、输出chapter文件、输出qpfile是独立的功能,可以分开也可以一起执行。

7.把audio.aac输出为audio-cutted.aac

代码: 全选

trimapp.py -b -i "audio.aac" -o "audio-cutted.aac" -mr "trims.avs"
注:假如不添加-b参数,直接输出aac的话,程序不会报错,但输出来的实质上的挂aac之名的mka,使用mp4box封装的时候就会报错。

8.从ts中抽取出来了sometv.aas,要调整为切过cm后压制的MP4成品时轴sometv.ajust.ass

代码: 全选

trimapp.py --ass "sometv.ass" "trim.avs"
关于CFR和VFR片源的处理:
假设片源为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。
附件
TrimApp.rar
(4.52 KiB) 下载 235 次
上次由 cunhan 在 2013-06-11 20:11,总共编辑 3 次。

头像
reekilynn
帖子: 13
注册时间: 2010-09-21 22:44
联系: 网站

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2010-11-30 0:37

suggestion: adjust qpfile output according to the x264 update.(new x264 qp input doesn't need "-1")

头像
06_taro
核心会员
核心会员
帖子: 998
注册时间: 2010-09-22 18:32
来自: United Kingdom
联系: 网站

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2010-12-02 12:42

-1還是保留吧,反正新版的x264仍然是支持的,還有很多人不用新版的……
つまんねー事聞くなよ!

I, personally, for me, believe (obviously sometimes) that my OS choice is right. That's me. I'm not telling you that you should believe it. Learn the facts, and the origins behind the facts, and make up your own damn mind. That's why you have one. (source)

Follow me: @06_taro

304——
为纪念伟大的宇宙史上最强压制304先生,联合国教科文组织决定,将每年的第304天,即平年的10月31日或者闰年的10月30日,定为世界304日。

047007-AgN
帖子: 30
注册时间: 2010-09-26 17:50

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2011-11-06 22:05

想问下AVS里要怎么写
以前看到这贴时试了下没问题
可现在想用的时候却"Error: Avisynth script has no uncommented trims"
-----------------
囧!我把所有需要的东西都放在一个文件夹里就正常了

头像
rshadow
帖子: 57
注册时间: 2011-03-23 10:18
联系: ICQ

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2012-01-29 15:47

Python官网上同时有2.7和3.2……请问是用哪一个都可以吗

头像
-o-o-304-o-o-
超级版主
帖子: 640
注册时间: 2010-10-10 20:00
来自: US
联系: 网站

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2012-01-29 20:34

rshadow 写了:Python官网上同时有2.7和3.2……请问是用哪一个都可以吗
python 2.7 X86,3.2没试
► 显示内容 En Taro 06!Taro Pie NC Fanclub project始动!聊天用Q群开放中
► 显示内容 胸中有万言,退敌无一策,是谓书生误国"
► 显示内容 前辈们的信念
► 显示内容 妇联招新广告,走过路过可以看看撒
► 显示内容 香芋派,后期菊苣们的一致选择
► 显示内容 众菊苣喜评香芋派
► 显示内容 聊天用工具

cunhan
核心会员
核心会员
帖子: 214
注册时间: 2010-09-20 22:09

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2012-01-29 20:35

python27.

https://code.google.com/p/cunhan-media- ... loads/list
或者到这里下载不需要python的exe版本

头像
rshadow
帖子: 57
注册时间: 2011-03-23 10:18
联系: ICQ

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2012-01-30 0:03

\拜谢收下/ 这下不用纠结便携性了
顺手把OneKeyReEncoding也偷了(逃

cunhan
核心会员
核心会员
帖子: 214
注册时间: 2010-09-20 22:09

Re: 根据Trim剪辑音频、生产chapter和qpfile的Python脚本——TrimApp

2012-01-30 12:54

OneKeyReEncoding那个过时了,没啥用。
就是一堆CLI调用的集合。

现在打过pathc的x264,例如tMOD,就能一个命令出片,非常方便。

回到 “音频编码器 / Audio encoder”