「Trim」修訂間的差異

出自NMM Doc
跳至導覽 跳至搜尋
行 3: 行 3:
==参数==
==参数==


Trim截取一个视频片段中从''first_frame''到''last_frame''帧数(''first_frame''和''last_frame''也包含在内)。如果该片段包含音频,则音频也会一并被截取。截取时请注意 ,AviSynth 计算帧数从0开始,既一个片段的第一帧的编号并不是1,而是0。当''last_frame''为0时,Trim会一直截取到视频最后一帧。
Trim截取一个视频片段中从''first_frame'' (首帧) 到''last_frame'' (末帧) 帧数(''first_frame''和''last_frame''也包含在内)。如果该片段包含音频,则音频也会一并被截取。截取时请注意 ,'''AviSynth 计算帧数从0开始,既一个片段的第一帧的编号并不是1,而是0。''' 当''last_frame''为0时,Trim会一直截取到视频最后一帧。


Trim不能被用作单独截取音频片段。如果需要截取音频片段,您需要首先用[[BlankClip]]生成一个空白视频片段,再用[[AudioDub]]将音频视频结合,再将这个片段用Trim截取后,通过[[KillVideo]]删除视频部分,只留下音频。
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.
''pad_audio'' (默认:true) 使音频和视频保持长度一致,使两者对齐。否则在音频比视频短时,依然会保留一部分无声的部分。在''last_frame''=0 ''pad_audio'' = false 时,音频和视频流的结尾是没有关联的。


==一般用例==
==一般用例==


  Trim(100,0)        # delete the first 100 frames, audio padded
  Trim(100,0)        # 删掉前100帧,同时对齐音频,
               # or trimmed to match the video length.
               # 或者说也截取也视频一样长的音频。
  Trim(100,0,false)     # delete the first 100 frames of audio and video,
  Trim(100,0,false)     # 删掉前100帧的音频和视频
               # the resulting stream lengths remain independent.
               # 得到的视频和音频长度没有关联。
  Trim(100,-100)       # is the same as trim(100,199)
  Trim(100,-100)       # 同trim(100,199)
  Trim(100,199,false)    # audio will be trimmed if longer but not
  Trim(100,199,false)    # 音频如果比100帧长,就截取,
               # padded if shorter to frame 199
               # 如果比100帧短,也不对齐。
  Trim(0,-1)         # returns only the first frame
  Trim(0,-1)         # 只返回第一帧
  Trim(0,100)+Trim(200,300) # returns frames 0 to 100 and 200 to 300 (i.e. removing 101 to 199)
  Trim(0,100)+Trim(200,300) # 返回第0帧到第100帧和第200帧到第300帧(即删掉了第101帧到第199帧)


==对视频进行分段处理==
==对视频进行分段处理==
行 44: 行 44:


==高级分段处理==
==高级分段处理==
 由于单纯依靠Trim进行复杂的分段和拼接比较麻烦,且分段脚本较为复杂繁冗,不便于阅读和维护,不少用户通过自定义脚本函数的方式实现了更加方便的分段处理。
 由于单纯依靠Trim进行复杂的分段和拼接比较麻烦,且分段脚本较为复杂繁冗,不便于阅读和维护, 且内存占用率很高 不少用户通过自定义脚本函数的方式实现了更加方便的分段处理。
 请参考:
 请参考:
# [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()或者[[ClipSlice]]()函数。
# [http://www.nmm-hd.org/bbs/thread-1201-1-1.html MYEPTools]脚本包中的EPClip()或者[[ClipSlice]]()函数。
# [[ApplayRange]]


==版本历史==
==版本历史==
行 56: 行 57:
| Added pad audio.
| Added pad audio.
|}
|}
[[分类:内部滤镜]]

於 2010年9月8日 (三) 08:56 的修訂

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

參數

Trim截取一個視頻片段中從first_frame(首幀)到last_frame(末幀)幀數(first_framelast_frame也包含在內)。如果該片段包含音頻,則音頻也會一併被截取。截取時請注意,AviSynth計算幀數從0開始,既一個片段的第一幀的編號並不是1,而是0。last_frame為0時,Trim會一直截取到視頻最後一幀。

Trim不能被用作單獨截取音頻片段。如果需要截取音頻片段,您需要首先用BlankClip生成一個空白視頻片段,再用AudioDub將音頻視頻結合,再將這個片段用Trim截取後,通過KillVideo刪除視頻部分,只留下音頻。

pad_audio (默認:true) 使音頻和視頻保持長度一致,使兩者對齊。否則在音頻比視頻短時,依然會保留一部分無聲的部分。在last_frame=0和pad_audio = false時,音頻和視頻流的結尾是沒有關聯的。

一般用例

Trim(100,0)               # 删掉前100帧,同时对齐音频,
                          # 或者说也截取也视频一样长的音频。
Trim(100,0,false)         # 删掉前100帧的音频和视频
                          # 得到的视频和音频长度没有关联。
Trim(100,-100)            # 同trim(100,199)
Trim(100,199,false)       # 音频如果比100帧长,就截取,
                          # 如果比100帧短,也不对齐。
Trim(0,-1)                # 只返回第一帧
Trim(0,100)+Trim(200,300) # 返回第0帧到第100帧和第200帧到第300帧(即删掉了第101帧到第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()函數。
  3. ApplayRange

版本歷史

v2.56 Added pad audio.