“Trim”的版本间的差异

来自NMM Doc
跳到导航 跳到搜索
第47行: 第47行:
 请参考:
 请参考:
# [http://www.nmm-hd.org/bbs/thread-667-1-1.html AAD]脚本包中的aadtrim()函数;
# [http://www.nmm-hd.org/bbs/thread-667-1-1.html AAD]脚本包中的aadtrim()函数;
# [http://www.nmm-hd.org/bbs/thread-1201-1-1.html MYEPTools]脚本包中的EPClip()函数。
# [http://www.nmm-hd.org/bbs/thread-1201-1-1.html MYEPTools]脚本包中的EPClip()或者[[ClipSlice]]()函数。


==版本历史==
==版本历史==

2010年8月30日 (一) 23:26的版本

Trim(clip clip, int first_frame, int last_frame [, bool pad_audio])

参数

Trim截取一个视频片段中从first_framelast_frame帧数(first_framelast_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                   #将三个段落重新进行拼接。

使用对混合型视频进行分段处理:

  1. 假设视频0~99帧为30i(需要进行deinterlace);
  2. 100~1999帧是pulldown(需要进行IVTC);
  3. 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进行复杂的分段和拼接比较麻烦,且分段脚本较为复杂繁冗,不便于阅读和维护,不少用户通过自定义脚本函数的方式实现了更加方便的分段处理。 请参考:

  1. AAD脚本包中的aadtrim()函数;
  2. MYEPTools脚本包中的EPClip()或者ClipSlice()函数。

版本历史

v2.56 Added pad audio.