Trim
(add link to avs+ documentation) |
|||
(20 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | <div {{BlueBox2|40|0|3px solid purple}} > |
− | Trim | + | {{AvsPlusFullname}}<br> |
− | + | Up-to-date documentation: [https://avisynthplus.readthedocs.io/en/latest/avisynthdoc/corefilters/trim.html https://avisynthplus.readthedocs.io] | |
− | + | </div> | |
− | Trim(clip, int ''first_frame'', int '' | + | |
− | + | ||
− | + | == Trim == | |
− | + | <div style="max-width:62em" > | |
− | + | ''Trims'' a clip – removes frames from one or both ends. | |
+ | |||
+ | '''Trim''' cannot trim a clip if there is no video. Use '''AudioTrim''' (from AviSynth v2.60) for that case; for versions prior to v2.60, you must [[AudioDub]] your audio-only clip to a video clip and '''Trim''' ''that''. | ||
+ | |||
+ | The resulting clip starts with frame number 0, and this must be taken into account when making additional edits using that clip. To view a clip's frame number at any point in your script, temporarily insert an [[Info]] or [[ShowFrameNumber]] statement. | ||
+ | |||
+ | |||
+ | For convenience, '''Trim''' can be called in four slightly different ways: | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |Trim(clip, int ''first_frame'', int ''last_frame'' [, bool ''pad''] ) | ||
}} | }} | ||
+ | :Returns a clip starting at {{FuncArg|first_frame}} and running up to and including {{FuncArg|last_frame}}. | ||
+ | :* For example, <tt>Trim(3, 5)</tt> returns source clip frames '''3''', '''4''' and '''5'''. | ||
+ | :*Remember, AviSynth starts counting at frame 0. | ||
+ | :*If you set {{FuncArg|last_frame}} to 0, you will get a clip starting at {{FuncArg|first_frame}} and running to the end of the clip. | ||
+ | |||
+ | {{Par2h5|pad|bool|true}} | ||
+ | ::True by default, {{FuncArg|pad}} 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 {{FuncArg|pad}}=false when the soundtracks being joined were originally contiguous – compare to [[UnalignedSplice]]. | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |Trim(clip, int ''first_frame'', int -''num_frames'' [, bool ''pad''] ) | ||
+ | }} | ||
+ | :With a negative value for the second argument, you get a clip starting at {{FuncArg|first_frame}} and running for {{FuncArg|num_frames}} frames. | ||
+ | :* For example, <tt>Trim(0, -4)</tt> returns source clip frames '''0''', '''1''', '''2''' and '''3'''. | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |Trim(clip, int ''first_frame'', [int ''end'' , bool ''pad''] ) | ||
+ | }} | ||
+ | :Returns a clip starting at {{FuncArg|first_frame}} and running up to and including frame {{FuncArg|end}}. From Avisynth v2.60. | ||
+ | :* For example, <tt>Trim(3, {{FuncArg|end}}=7)</tt> is equivalent to <tt>Trim(3, 7)</tt>; both return frames '''3''', '''4''', '''5''', '''6''' and '''7'''. | ||
+ | :*{{FuncArg|end}} default = 0; must be >= {{FuncArg|first_frame}}. | ||
+ | :*Unlike the {{FuncArg|last_frame}} syntax, the {{FuncArg|end}} syntax has no discontinuous boundary values: {{FuncArg|end}}=0 means end at frame 0. This feature is useful in avoiding unexpected boundary conditions in your user functions. | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |Trim(clip, int ''first_frame'', [int ''length'' , bool ''pad''] ) | ||
+ | }} | ||
+ | :Returns a clip starting at {{FuncArg|first_frame}} and running for {{FuncArg|length}} frames. From Avisynth v2.60. | ||
+ | :*For example, <tt>Trim(3, {{FuncArg|length}}=5)</tt> is equivalent to <tt>Trim(3, -5)</tt>; both return frames '''3''', '''4''', '''5''', '''6''' and '''7'''. | ||
+ | :*{{FuncArg|length}} default = 0; must be >= 0. | ||
+ | :*Unlike the {{FuncArg|num_frames}} syntax, the {{FuncArg|length}} syntax has no discontinuous boundary values: {{FuncArg|length}}=0 means return a zero length clip. This feature is useful in avoiding unexpected boundary conditions in your user functions. | ||
+ | </div> | ||
+ | |||
+ | |||
+ | == AudioTrim == | ||
+ | <div style="max-width:62em" > | ||
+ | '''AudioTrim''' (from 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). | ||
+ | |||
+ | All time arguments are in seconds, floating-point. | ||
+ | * Trims on audio-only clips are accurate to the nearest audio sample. | ||
+ | * Trims on clips with video are accurate to the nearest whole video frame. | ||
+ | |||
+ | '''AudioTrim''' cannot trim a clip if there is no audio. Use '''Trim''' for that case. | ||
+ | |||
+ | The resulting clip starts with time = 0.0, and this must be taken into account when making additional edits to that clip. To view a clip's time at any point in your script, temporarily insert an [[Info]] or [[ShowTime]] statement. | ||
+ | |||
+ | |||
+ | For convenience, '''AudioTrim''' can be called in four slightly different ways: | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |AudioTrim(clip, float ''start_time'', float ''end_time'') | ||
+ | }} | ||
+ | :Returns a clip starting at {{FuncArg|start_time}} and running up to and including time {{FuncArg|end_time}}. | ||
+ | :* For example, <tt>AudioTrim(3.0, 5.0)</tt> returns source clip from [[ShowTime|time]] '''00:00:03.000''' to '''00:00:05.000'''. | ||
+ | :* If you set {{FuncArg|end_time}} to 0.0, you will get a clip starting at {{FuncArg|start_time}} seconds and running to the end of the clip. | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |AudioTrim(clip, float ''start_time'', float -''duration'') | ||
+ | }} | ||
+ | :With a negative value for the second argument, you will get a clip starting at {{FuncArg|start_time}} and running for {{FuncArg|duration}} seconds. | ||
+ | :* For example, <tt>AudioTrim(0.0, -4.0)</tt> returns the source clip from [[ShowTime|time]] '''00:00:00.000''' to '''00:00:04.000'''. | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |AudioTrim(clip, float ''start_time'' [, float ''end''] ) | ||
+ | }} | ||
+ | :Returns a clip starting at {{FuncArg|start_time}} and running up to and including time {{FuncArg|end}}. | ||
+ | :*For example, <tt>AudioTrim(3.0, {{FuncArg|end}}=7.0)</tt> is equivalent to <tt>AudioTrim(3.0, 7.0)</tt> | ||
+ | :*{{FuncArg|end}} default = 0.0; must be >= {{FuncArg|start_time}}. | ||
+ | :*Unlike the {{FuncArg|end_time}} syntax, the {{FuncArg|end}} syntax has no discontinuous boundary values: {{FuncArg|end}}=0.0 means return a zero length clip. This feature is useful in avoiding unexpected boundary conditions in your user functions. | ||
+ | |||
+ | |||
+ | {{FuncDef | ||
+ | |AudioTrim(clip, float ''start_time'' [, float ''length''] ) | ||
+ | }} | ||
+ | :Returns a clip starting at {{FuncArg|start_time}} and running for {{FuncArg|length}} seconds. | ||
+ | :*For example, <tt>AudioTrim(3.0, {{FuncArg|length}}=4.0)</tt> is equivalent to <tt>AudioTrim(3.0, -4.0)</tt> | ||
+ | :*{{FuncArg|length}} default = 0.0; must be >= 0. | ||
+ | :*Unlike the {{FuncArg|duration}} syntax, the {{FuncArg|length}} syntax has no discontinuous boundary values: {{FuncArg|length}}=0.0 means return a zero length clip. This feature is useful in avoiding unexpected boundary conditions in your user functions.</div> | ||
+ | |||
− | + | == Examples == | |
+ | * Return only the first frame (frame 0) | ||
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | Trim(0, -1) | ||
+ | Trim(0, end=0) | ||
+ | Trim(0, length=1) | ||
+ | </div> | ||
− | + | * Return only the last frame | |
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | Trim(FrameCount, -1) | ||
+ | Trim(FrameCount, end=Framecount) | ||
+ | Trim(FrameCount, length=1) | ||
+ | </div> | ||
− | + | * Return frames 100-199 (duration=100) | |
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | Trim(100, 199) | ||
+ | Trim(100, -100) | ||
+ | </div> | ||
− | + | * Delete the first 100 frames; audio padded or trimmed to match the video length. | |
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | Trim(100, 0) # (pad=true by default) | ||
+ | </div> | ||
− | + | * Delete the first 100 frames of audio and video; the resulting stream lengths remain independent.{{Dubious|Talk:Trim}} | |
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | Trim(100, 0, pad=false) | ||
+ | </div> | ||
− | + | * Trim audio if longer than video ({{FuncArg|pad}} does affect this action) | |
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | Trim(0, FrameCount-1) | ||
+ | </div> | ||
− | + | * Audio will be trimmed if longer, but not padded if shorter to frame 199 | |
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | Trim(100, 199, pad=false) | ||
+ | </div> | ||
− | + | * AudioTrim: trim video if longer than audio | |
− | + | <div {{BoxWidthIndent|26|2}} > | |
− | + | AudioTrim(0, AudioDuration) | |
− | + | </div> | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | AudioTrim( | + | |
− | + | ||
− | + | * AudioTrim: keep the audio between 1.0 and 6.5 seconds | |
+ | <div {{ListItemContinue}} > | ||
+ | (ie, delete the first second, keep the following 5.5 seconds) | ||
+ | </div> | ||
+ | <div {{BoxWidthIndent|26|2}} > | ||
+ | AudioTrim(1, 6.5) | ||
+ | AudioTrim(1, -5.5) | ||
+ | AudioTrim(1, length=5.5) | ||
+ | </div> | ||
+ | == Changes == | ||
{| border="1" | {| border="1" | ||
|- | |- | ||
Line 52: | Line 172: | ||
[[Category:Internal filters]] | [[Category:Internal filters]] | ||
+ | [[Category:Timeline_editing_filters]] |
Latest revision as of 05:50, 18 September 2022
AviSynth+
Up-to-date documentation: https://avisynthplus.readthedocs.io
Contents |
[edit] Trim
Trims a clip – removes frames from one or both ends.
Trim cannot trim a clip if there is no video. Use AudioTrim (from AviSynth v2.60) for that case; for versions prior to v2.60, you must AudioDub your audio-only clip to a video clip and Trim that.
The resulting clip starts with frame number 0, and this must be taken into account when making additional edits using that clip. To view a clip's frame number at any point in your script, temporarily insert an Info or ShowFrameNumber statement.
For convenience, Trim can be called in four slightly different ways:
Trim(clip, int first_frame, int last_frame [, bool pad] )
- Returns a clip starting at first_frame and running up to and including last_frame.
- For example, Trim(3, 5) returns source clip frames 3, 4 and 5.
- Remember, AviSynth starts counting at frame 0.
- If you set last_frame to 0, you will get a clip starting at first_frame and running to the end of the clip.
bool pad = true
- True by default, pad 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 – compare to UnalignedSplice.
Trim(clip, int first_frame, int -num_frames [, bool pad] )
- With a negative value for the second argument, you get a clip starting at first_frame and running for num_frames frames.
- For example, Trim(0, -4) returns source clip frames 0, 1, 2 and 3.
Trim(clip, int first_frame, [int end , bool pad] )
- Returns a clip starting at first_frame and running up to and including frame end. From Avisynth v2.60.
- For example, Trim(3, end=7) is equivalent to Trim(3, 7); both return frames 3, 4, 5, 6 and 7.
- end default = 0; must be >= first_frame.
- Unlike the last_frame syntax, the end syntax has no discontinuous boundary values: end=0 means end at frame 0. This feature is useful in avoiding unexpected boundary conditions in your user functions.
Trim(clip, int first_frame, [int length , bool pad] )
- Returns a clip starting at first_frame and running for length frames. From Avisynth v2.60.
- For example, Trim(3, length=5) is equivalent to Trim(3, -5); both return frames 3, 4, 5, 6 and 7.
- length default = 0; must be >= 0.
- Unlike the num_frames syntax, the length syntax has no discontinuous boundary values: length=0 means return a zero length clip. This feature is useful in avoiding unexpected boundary conditions in your user functions.
[edit] AudioTrim
AudioTrim (from 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).
All time arguments are in seconds, floating-point.
- Trims on audio-only clips are accurate to the nearest audio sample.
- Trims on clips with video are accurate to the nearest whole video frame.
AudioTrim cannot trim a clip if there is no audio. Use Trim for that case.
The resulting clip starts with time = 0.0, and this must be taken into account when making additional edits to that clip. To view a clip's time at any point in your script, temporarily insert an Info or ShowTime statement.
For convenience, AudioTrim can be called in four slightly different ways:
AudioTrim(clip, float start_time, float end_time)
- Returns a clip starting at start_time and running up to and including time end_time.
- For example, AudioTrim(3.0, 5.0) returns source clip from time 00:00:03.000 to 00:00:05.000.
- If you set end_time to 0.0, you will get a clip starting at start_time seconds and running to the end of the clip.
AudioTrim(clip, float start_time, float -duration)
- With a negative value for the second argument, you will get a clip starting at start_time and running for duration seconds.
- For example, AudioTrim(0.0, -4.0) returns the source clip from time 00:00:00.000 to 00:00:04.000.
AudioTrim(clip, float start_time [, float end] )
- Returns a clip starting at start_time and running up to and including time end.
- For example, AudioTrim(3.0, end=7.0) is equivalent to AudioTrim(3.0, 7.0)
- end default = 0.0; must be >= start_time.
- Unlike the end_time syntax, the end syntax has no discontinuous boundary values: end=0.0 means return a zero length clip. This feature is useful in avoiding unexpected boundary conditions in your user functions.
AudioTrim(clip, float start_time [, float length] )
- Returns a clip starting at start_time and running for length seconds.
- For example, AudioTrim(3.0, length=4.0) is equivalent to AudioTrim(3.0, -4.0)
- length default = 0.0; must be >= 0.
- Unlike the duration syntax, the length syntax has no discontinuous boundary values: length=0.0 means return a zero length clip. This feature is useful in avoiding unexpected boundary conditions in your user functions.
[edit] Examples
- Return only the first frame (frame 0)
Trim(0, -1) Trim(0, end=0) Trim(0, length=1)
- Return only the last frame
Trim(FrameCount, -1) Trim(FrameCount, end=Framecount) Trim(FrameCount, length=1)
- Return frames 100-199 (duration=100)
Trim(100, 199) Trim(100, -100)
- Delete the first 100 frames; audio padded or trimmed to match the video length.
Trim(100, 0) # (pad=true by default)
- Delete the first 100 frames of audio and video; the resulting stream lengths remain independent.[dubious – discuss]
Trim(100, 0, pad=false)
- Trim audio if longer than video (pad does affect this action)
Trim(0, FrameCount-1)
- Audio will be trimmed if longer, but not padded if shorter to frame 199
Trim(100, 199, pad=false)
- AudioTrim: trim video if longer than audio
AudioTrim(0, AudioDuration)
- AudioTrim: keep the audio between 1.0 and 6.5 seconds
(ie, delete the first second, keep the following 5.5 seconds)
AudioTrim(1, 6.5) AudioTrim(1, -5.5) AudioTrim(1, length=5.5)
[edit] Changes
v2.60 | Added AudioTrim. Added length and end parameters. |
v2.56 | Added pad audio. |