Trim

From Avisynth wiki
(Difference between revisions)
Jump to: navigation, search
m (one more touch-up)
(revert names)
Line 1: Line 1:
 
== Trim ==
 
== Trim ==
{{Template:Func3Def
+
{{Template:Func4Def
|Trim(clip, int ''first'', int [-]''last'' [, bool ''"pad"''])
+
|Trim(clip, int ''first_frame'', int ''last_frame'' [, bool ''"pad"''])
|Trim(clip, int ''first'', [int ''"end"'' , bool ''"pad"''])
+
|Trim(clip, int ''first_frame'', int -''num_frames'' [, bool ''"pad"''])
|Trim(clip, int ''first'', [int ''"length"'' , bool ''"pad"''])
+
|Trim(clip, int ''first_frame'', [int ''"end"'' , bool ''"pad"''])
 +
|Trim(clip, int ''first_frame'', [int ''"length"'' , bool ''"pad"''])
 
}}
 
}}
  
'''Trim''' trims a clip so that it includes only the frames {{FuncArg|first}} up to and including {{FuncArg|last}}. The audio is similarly trimmed so that it stays synchronized (see {{FuncDef|pad}} below). Remember AviSynth starts counting at frame 0.
+
'''Trim''' trims a clip so that it includes only the frames {{FuncArg|first_frame}} up to and including {{FuncArg|last_frame}}. The audio is similarly trimmed so that it stays synchronized (see {{FuncDef|pad}} below). Remember AviSynth starts counting at frame 0.
  
If you set a negative value for the second argument, that is '''-'''{{FuncArg|last}}, you will get a clip starting at {{FuncArg|first}} and running for {{FuncArg|last}} frames. If you set {{FuncArg|last}} to zero, you will get a clip starting at {{FuncArg|first}} and running to the end of the clip.
+
If you set a negative value for the second argument, that is '''-'''{{FuncArg|num_frames}}, you will get a clip starting at {{FuncArg|first_frame}} and running for {{FuncArg|num_frames}} frames. If you set {{FuncArg|last_frame}} to zero, you will get a clip starting at {{FuncArg|first_frame}} and running to the end of the clip.
  
 
{{Par2|end|int|0}}
 
{{Par2|end|int|0}}
Line 15: Line 16:
 
:* <tt>Trim(3, 7)&nbsp;</tt> &rarr; <tt>&nbsp;Trim(3, end=7)</tt>
 
:* <tt>Trim(3, 7)&nbsp;</tt> &rarr; <tt>&nbsp;Trim(3, end=7)</tt>
 
:* <tt>Trim(3, -5)</tt> &rarr; <tt>&nbsp;Trim(3, length=5)</tt>
 
:* <tt>Trim(3, -5)</tt> &rarr; <tt>&nbsp;Trim(3, length=5)</tt>
:Unlike the first syntax, the alternate syntax has no discontinuous boundary values: {{FuncArg|end}}=0 means end at frame 0; {{FuncArg|length}}=0 means return a zero length clip. These are most useful in avoiding unexpected boundary conditions in your user functions.
+
:Unlike the first_frame syntax, the alternate syntax has no discontinuous boundary values: {{FuncArg|end}}=0 means end at frame 0; {{FuncArg|length}}=0 means return a zero length clip. These are most useful in avoiding unexpected boundary conditions in your user functions.
  
 
{{Par2|pad|bool|true}}
 
{{Par2|pad|bool|true}}
Line 25: Line 26:
  
 
== AudioTrim ==
 
== AudioTrim ==
{{Template:Func3Def
+
{{Template:Func4Def
|AudioTrim(clip, float ''first'', float [-]''last'')
+
|AudioTrim(clip, float ''start_time'', float ''end_time'')
|AudioTrim(clip, float ''first'' [, float ''"end"''])
+
|AudioTrim(clip, float ''start_time'', float -''duration'')
|AudioTrim(clip, float ''first'' [, float ''"length"''])
+
|AudioTrim(clip, float ''start_time'' [, float ''"end"''])
 +
|AudioTrim(clip, float ''start_time'' [, float ''"length"''])
 
}}
 
}}
  
'''AudioTrim''' (in Avisynth v2.60) trims a clip based on ''time'', not on ''frames''. This is most useful for audio-only clips, where "frames" have no meaning anyway, and you may want to edit with finer precision than whole frames (at 30fps, 1 frame=33.3ms). The returned clip includes only the audio (or video+audio) from time {{FuncArg|first}} up to and including time {{FuncArg|last}}. All time arguments are in seconds.
+
'''AudioTrim''' (in Avisynth v2.60) trims a clip based on ''time'', not on ''frames''. This is most useful for audio-only clips, where "frames" have no meaning anyway, and you may want to edit with finer precision than whole frames (at 30fps, 1 frame=33.3ms). The returned clip includes only the audio (or video+audio) from time {{FuncArg|start_time}} up to and including time {{FuncArg|end_time}}. All time arguments are in seconds.
  
If you set a negative value for the second argument, that is '''-'''{{FuncArg|last}}, you will get a clip starting at {{FuncArg|first}} seconds and running for {{FuncArg|last}} seconds. If you set {{FuncArg|last}} to zero, you will get a clip starting at {{FuncArg|first}} seconds and running to the end of the clip.
+
If you set a negative value for the second argument, that is '''-'''{{FuncArg|duration}}, you will get a clip starting at {{FuncArg|start_time}} seconds and running for {{FuncArg|duration}} seconds. If you set {{FuncArg|end_time}} to zero, you will get a clip starting at {{FuncArg|start_time}} seconds and running to the end of the clip.
  
 
{{Par2|end|float|0.0}}
 
{{Par2|end|float|0.0}}

Revision as of 01:36, 8 January 2016

Contents

Trim

Trim(clip, int first_frame, int last_frame [, bool "pad"])
Trim(clip, int first_frame, int -num_frames [, bool "pad"])
Trim(clip, int first_frame, [int "end" , bool "pad"])
Trim(clip, int first_frame, [int "length" , bool "pad"])

Trim trims a clip so that it includes only the frames first_frame up to and including last_frame. The audio is similarly trimmed so that it stays synchronized (see pad below). Remember AviSynth starts counting at frame 0.

If you set a negative value for the second argument, that is -num_frames, you will get a clip starting at first_frame and running for num_frames frames. If you set last_frame to zero, you will get a clip starting at first_frame and running to the end of the clip.

int  end = 0
int  length = 0

In Avisynth v2.60, you may use the alternate syntax with named arguments; for example,
  • Trim(3, 7)  Trim(3, end=7)
  • Trim(3, -5) Trim(3, length=5)
Unlike the first_frame syntax, the alternate syntax has no discontinuous boundary values: end=0 means end at frame 0; length=0 means return a zero length clip. These are most useful in avoiding unexpected boundary conditions in your user functions.

bool  pad = 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. You should use pad=false when the soundtracks being joined were originally contiguous (see Splice)
Trim with audio-only clips

In AviSynth v2.60, to trim an audio-only clip, you simply set a fake frame rate with AssumeFPS. In earlier versions you cannot do this: you must make a BlankClip, use AudioDub, trim that, and then KillVideo. Otherwise, AviSynth returns the error message "cannot trim if there is no video".


AudioTrim

AudioTrim(clip, float start_time, float end_time)
AudioTrim(clip, float start_time, float -duration)
AudioTrim(clip, float start_time [, float "end"])
AudioTrim(clip, float start_time [, float "length"])

AudioTrim (in Avisynth v2.60) trims a clip based on time, not on frames. This is most useful for audio-only clips, where "frames" have no meaning anyway, and you may want to edit with finer precision than whole frames (at 30fps, 1 frame=33.3ms). The returned clip includes only the audio (or video+audio) from time start_time up to and including time end_time. All time arguments are in seconds.

If you set a negative value for the second argument, that is -duration, you will get a clip starting at start_time seconds and running for duration seconds. If you set end_time to zero, you will get a clip starting at start_time seconds and running to the end of the clip.

float  end = 0.0
float  length = 0.0

You may prefer the alternate syntax with named arguments; for example,
  • AudioTrim(3.0, 7.0)  AudioTrim(3.0, end=7.0)
  • AudioTrim(3.0, -4.0) AudioTrim(3.0, length=4.0)


Examples

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) ie, start=100, duration=100
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,end=0)           #
Trim(0,length=1)        #
AudioTrim(1,5.5)        # keeps the audio samples between 1 and 5.5 seconds
AudioTrim(1,end=5.5)    #
AudioTrim(1,-5.5)       # cuts the first second and keeps the following 5.5 seconds
AudioTrim(1,length=5.5) #


Changes

v2.60 Added AudioTrim. Added length and end parameters.
v2.56 Added pad audio.
Personal tools