分页: 1 / 1

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

发表于 : 2010-09-20 22:16
cunhan
在网上找到两个非常方便的剪切音频脚本:
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。

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

发表于 : 2010-11-30 0:37
reekilynn
suggestion: adjust qpfile output according to the x264 update.(new x264 qp input doesn't need "-1")

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

发表于 : 2010-12-02 12:42
06_taro
-1還是保留吧,反正新版的x264仍然是支持的,還有很多人不用新版的……

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

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

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

发表于 : 2012-01-29 15:47
rshadow
Python官网上同时有2.7和3.2……请问是用哪一个都可以吗

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

发表于 : 2012-01-29 20:34
-o-o-304-o-o-
rshadow 写了:Python官网上同时有2.7和3.2……请问是用哪一个都可以吗
python 2.7 X86,3.2没试

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

发表于 : 2012-01-29 20:35
cunhan
python27.

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

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

发表于 : 2012-01-30 0:03
rshadow
\拜谢收下/ 这下不用纠结便携性了
顺手把OneKeyReEncoding也偷了(逃

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

发表于 : 2012-01-30 12:54
cunhan
OneKeyReEncoding那个过时了,没啥用。
就是一堆CLI调用的集合。

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