Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion. Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules. |
![]() |
#21 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,223
|
Excuse me digging up this older thread, came across it whilst searching forum and thought I could add something
that could be of use to others that view the thread. Delete frames, no audio Code:
avisource("d:\avs\flashtest.avi").trim(1000,-10).showframenumber # Delete list of frames, No Audio returned # Uncomment one of the below three lines #FrameSel(3,5,7,reject=true) # delete frames using direct arg frame numbers, return no audio (ranges not supported in direct arg framenos) #FrameSel(SCmd="3;5;7",reject=true) # delete frames using scmd string of frame numbers, return no audio (';' or Chr(10)=separator, ','=range) # del.txt = file containing eg "3"+chr(10)+"5"+chr(10)+"7"+chr(10) #FrameSel(Cmd="del.txt",reject=true) # delete frames using cmd file of newline separated frame numbers, return no audio Code:
avisource("d:\avs\flashtest.avi").trim(1000,-10).showframenumber # Delete list of frames, Audio trim/splice processed using Prune plugin (with audio fadeout/in to avoid clicks) # Uncomment one of the below three lines #FrameSel_CmdReWrite("Prune.txt",3,5,7,reject=true,Prune=True,range=true)# Create Prune delete frames command file using direct args frame numbers #FrameSel_CmdReWrite("Prune.txt",SCmd="3;5;7",reject=true,Prune=True,range=true)# Create Prune delete frames command file using SCmd string of frame numbers # del.txt = file containing eg "3"+chr(10)+"5"+chr(10)+"7"+chr(10) #FrameSel_CmdReWrite("Prune.txt",Cmd="del.txt",reject=true,Prune=True,range=true)# Create Prune delete frames command file using Cmd file of frame numbers Prune(Cmd="Prune.txt",FadeSplice=True) # And then delete frames, avoid clicks at splices. Prune:- http://forum.doom9.org/showthread.php?t=162446 EDIT: Prune Default Fade duration = 1ms, adjustable to 25ms. EDIT: Script removed, see next post.
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 12th June 2014 at 17:44. |
![]() |
![]() |
![]() |
#22 | Link |
HeartlessS Usurer
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,223
|
Update of EDIT to previous post.
RejectRanges, Script function to delete ranges from clip, together with audio. Code:
Function RejectRanges(clip c,String "SCmd",String "Cmd",Bool "TrimAudio",Float "FadeMS") { # RejectRanges() by StainlessS. Required:- FrameSel, Prune, RT_Stats # Wrapper to delete frames/ranges along with audio, can supply frames/ranges in SCmd string And/Or Cmd file. # The wrapper makes for easier usage of Prune() which supports up to 256 input clips, but requires a clip index, # eg '3, 100,200' would specify clip 3, range 100 to 200. The wrapper does away with the necessity for the clip index as we # are only using a single clip here. Prune also does not have a 'reject' arg to delete specified frames rather than select them, # this wrapper also converts a list of frames to delete into a list of frames to select so that we can use Prune and its audio # capability. # # SCmd: Frames/Ranges specified in String (Frames/Ranges either Chr(10) or ';' separated, infix ',' specifies range, eg 'start,end'). # Cmd: Frames/Ranges specified in file (one frame/range per line, comments also allowed, see FrameSel for Further info). # TrimAudio: # True(default), deletes audio belonging to deleted frames # False, returns original audio, probably out of sync. # FadeMS: (default 1.0 millisec). Linear Audio Fade duration at splices when TrimAudio==true, 0 = dont fade (might result in audio 'clicks/cracks'). c TrimAudio=Default(TrimAudio,True) # default true trims audio, false returns original audio (audiodubbed, as Framesel returns no audio) FadeMS=Float(Default(FadeMS,1.0)) # 1 millisecond linear fadeout/fadein at splices PruneCmd = (TrimAudio) ? "~Prune_"+RT_LocalTimeString+".txt" : "" (!TrimAudio) \ ? FrameSel(Last,scmd=SCmd,cmd=Cmd,reject=true) \ : FrameSel_CmdReWrite(Last,PruneCmd,scmd=SCmd,cmd=Cmd,reject=true,Prune=True,range=true) (TrimAudio) ? Prune(Last,Cmd=PruneCmd,FadeIn=True,FadeSplice=True,FadeOut=True,Fade=FadeMS) : NOP # If TrimAudio==true then delete Prune temp file, Else restore original Audio to the now audio-less clip (TrimAudio) \ ? RT_FileDelete(PruneCmd) \ : (c.HasAudio) ? AudioDub(c) : NOP Return Last } Code:
avisource("d:\avs\flashtest.avi").trim(1000,-20).showframenumber # 20 frames SCMD=""" # This is a comment 1 # delete frame 1 9 # delete frame 9 11,15 # delete range 11 to 15 """ # del.txt = file containing eg "3"+chr(10)+"5"+chr(10)+"7"+chr(10) RejectRanges(scmd=SCMD,cmd="del.txt") # Delete frames 1 & 9, 11 to 15, and frames in del.txt 3 and 5 and 7, trim audio 1 ms fade #RejectRanges(scmd="1;9;11,15",cmd="del.txt") # Exactly the same as above SelectRanges, Script function to select ranges from clip, together with audio. Code:
Function SelectRanges(clip c,String "SCmd",String "Cmd",Bool "TrimAudio",Float "FadeMS",Bool "Ordered") { # SelectRanges() by StainlessS. Required:- FrameSel, Prune, RT_Stats # Wrapper to Select frames/ranges along with audio, can supply frames/ranges in SCmd string And/Or Cmd file. # The wrapper makes for easier usage of Prune() which supports up to 256 input clips, but requires a clip index, # eg '3, 100,200' would specify clip 3, range 100 to 200. The wrapper does away with the necessity for the clip index as we # are only using a single clip here. # # SCmd: Frames/Ranges specified in String (Frames/Ranges either Chr(10) or ';' separated, infix ',' specifies range, eg 'start,end'). # Cmd: Frames/Ranges specified in file (one frame/range per line, comments allowed, see FrameSel for Further info). # *** NOTE ***, If both Cmd and SCmd supplied AND Ordered == False, then will process Cmd file and then SCmd string afterwards, ie # Will select ranges in Cmd file and in order specified (rather than auto ordering ranges) and then append ranges specified in # SCmd string (and in order specified). # TrimAudio: # True(default), selects audio belonging to selected frames/ranges # False, returns original audio, probably out of sync (maybe totally out of whack if Ordered == false and selected ranges out of order). # FadeMS: (default 1.0 millisec). Linear Audio Fade duration at splices when TrimAudio==true, 0 = dont fade (might result in audio 'clicks/cracks'). # Ordered: # True(default), all frames/ranges are returned in sequencial order. Any frame specified more than once will return only 1 instance. # False, All frames/Ranges are returned in specified order, Cmd processed first and then SCmd. Frames/ranges specified more than once # will return multiple instances. Allows out-of-order trimming of clip, eg re-sequencing of scenes in movie. # # Does not make much sense to select individual frames with audio, best used with ranges. # Will coalesce individually selected adjacent frames/ranges before any Fade, ie only audio fade where sensible to do so. # TrimAudio==false with non Ordered selection will result in completely out of sync audio. c TrimAudio=Default(TrimAudio,True) # default true trims audio, false returns original audio (audiodubbed, as Framesel returns no audio) FadeMS=Float(Default(FadeMS,1.0)) # 1 millisecond linear fadeout/fadein at splices Ordered=Default(Ordered,True) # True (default) frames/ranges will be Ordered and selected only once even if specified more than once. # False, frames/ranges returned in specified order, Cmd processed 1st and then SCmd. PruneCmd = (TrimAudio) ? "~Prune_"+RT_LocalTimeString+".txt" : "" (!TrimAudio) \ ? FrameSel(Last,scmd=SCmd,cmd=Cmd,Ordered=Ordered) \ : FrameSel_CmdReWrite(Last,PruneCmd,scmd=SCmd,cmd=Cmd,Ordered=Ordered,Prune=True,range=true) (TrimAudio) ? Prune(Last,Cmd=PruneCmd,FadeIn=True,FadeSplice=True,FadeOut=True,Fade=FadeMS) : NOP # If TrimAudio==true then delete Prune temp file, Else restore original Audio to the now audio-less clip (TrimAudio) \ ? RT_FileDelete(PruneCmd) \ : (c.HasAudio) ? AudioDub(c) : NOP Return Last } Client script for SelectRanges Code:
avisource("d:\avs\flashtest.avi").trim(1000,-20).showframenumber # 20 frames SCMD=""" # This is a comment 1,3 # Select Range 1 to 3 9,11 # Select Range 9 to 11 14,15 # Select Range 14 to 15 2,5 # Select Range 2 to 5, If Ordered==True then already previously selected 1st range above (1,3) extended to 1,5 """ ORDERED=True SelectRanges(scmd=SCMD,Ordered=ORDERED) # Select SCmd ranges, trim audio 1 ms fade. #SelectRanges(scmd="1,3;9,11;14,15;2,5",Ordered=ORDERED) # Exactly the same as above EDIT: Short thread on clicks and cracks in audio when trimming:- http://forum.doom9.org/showthread.ph...03#post1534803 See FrameSel() for full range specifications in SCmd string and Cmd file eg '4,-10' as Trim(4,-10), 10 frames starting at frame 4. http://forum.doom9.org/showthread.php?t=167971 EDIT: Added 'Last' to FrameSel_CmdReWrite calls, make explicit that it requires a clip (otherwise might be baffling how it converts reject commands into select commands, Last only used to access FrameCount so we know what to reject).
__________________
I sometimes post sober. StainlessS@MediaFire ::: AND/OR ::: StainlessS@SendSpace "Some infinities are bigger than other infinities", but how many of them are infinitely bigger ??? Last edited by StainlessS; 10th December 2021 at 12:29. |
![]() |
![]() |
![]() |
Thread Tools | Search this Thread |
Display Modes | |
|
|