Trim
跳到导航
跳到搜索
Trim(clip clip, int first_frame, int last_frame [, bool pad_audio])
参数
Trim截取一个视频片段中从first_frame到last_frame帧数(first_frame和last_frame也包含在内)。如果该片段包含音频,则音频也会一并被截取。截取时请注意,AviSynth计算帧数从0开始,既一个片段的第一帧的编号并不是1,而是0。当last_frame为0时,Trim会一直截取到视频最后一帧。
Trim不能被用作单独截取音频片段。如果需要截取音频片段,您需要首先用BlankClip生成一个空白视频片段,再用AudioDub将音频视频结合,再将这个片段用Trim截取后,通过KillVideo删除视频部分,只留下音频。
pad_audio (默认:true) causes the audio stream to be padded to align with the video stream. Otherwise the tail of a short audio stream is left so. When last_frame=0 and pad_audio=false the end of the two streams remains independent.
一般用例
Trim(100,0) # delete the first 100 frames, audio padded # or trimmed to match the video length. Trim(100,0,false) # delete the first 100 frames of audio and video, # the resulting stream lengths remain independent. Trim(100,-100) # is the same as trim(100,199) Trim(100,199,false) # audio will be trimmed if longer but not # padded if shorter to frame 199 Trim(0,-1) # returns only the first frame Trim(0,100)+Trim(200,300) # returns frames 0 to 100 and 200 to 300 (i.e. removing 101 to 199)
对视频进行分段处理
简单的分段处理
v = avisource("source.avi") #载入视频 v1 = v.trim(0 , 99) #将视频分为v1、v2、v3三段,对v2用blur滤镜进行处理,保留v1、v3原样不动。 v2 = v.trim(100 , 1999).blur() v3 = v.trim(2000, 0) v1 + v2 + v3 #将三个段落重新进行拼接。
使用对混合型视频进行分段处理:
- 假设视频0~99帧为30i(需要进行deinterlace);
- 100~1999帧是pulldown(需要进行IVTC);
- 2000帧之后全部为30p(不需要进行任何处理,直接保留原样)。
v = mpeg2source("source.d2v") #载入视频 v1 = v.trim(0 , 99).nnedi3() #对0~99帧用nnedi3进行deinterlace。 v2 = v.trim(100 , 1999).tfm(mode=3).tdecimate(mode=1).AssumeFPS(30000/1001) #用TIVTC对v2段落进行IVTC。由于IVTC之后帧率降为23.976,没办法与v1和v2直接拼接, #所以这里用AssumeFPS将v2的帧率修改为29.970(=30000/1001)。 v3 = v.trim(2000, 0) v1 + v2 + v3 #将三个段落重新进行拼接。
当然,视频输出之后,还需要写对应的Timecode,封装为mkv才能让视频正确播放。
高级分段处理
由于单纯依靠Trim进行复杂的分段和拼接比较麻烦,且分段脚本较为复杂繁冗,不便于阅读和维护,不少用户通过自定义脚本函数的方式实现了更加方便的分段处理。 请参考:
版本历史
v2.56 | Added pad audio. |