View Single Post
Old 10th May 2019, 03:52   #10  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
A Pretty reasonable simple multi-source filter template script for splicing multiple source files (of similar characteristics).
Remove the square brackets around filename to make a Batch template (where makes one script for each selected source script).
ie make [GetSeq("___FILE___")] >>>======>>> GetSeq("___FILE___")
Can also extract and use the GetSeq() function in your scripts.
Does not use any fancy FFMS2 or LSMash args (just defaults).

Simple_AVI_LSmash_FFMS_Reader.avst [EDIT: The Name shown in template selector dialog box is in first line below, followinging "#ASYNTHER ".
Code:
#ASYNTHER Simple_AVI_LSmash_FFMS_Reader

# Requires RT_Stats


###########################
Function GetSeq(String vFn,String "aFn") {
    Function IsISOFileName(String s)  {s=RT_GetFileExtension(s) Return(s==".mov"||s==".mp4"||s==".m4v"||s==".3gp"||s==".3g2"||s==".mj2"||s==".dvb"||s==".dcf"||s==".m21")}
    Function IsRiffFileName(String s) {s=RT_GetFileExtension(s) Return(s==".avi"||s==".wav")}
    myName="GetSeq: "                                           aFn = Default(aFn,"")           aFn = (aFn=="") ? vFn : aFn
    Assert(vFn!="",RT_String("%sVFn Cannot be ''",myName))      vFn = vFn.RT_GetFullPathName    IsRiffV = vFn.IsRiffFileName    IsIsoV = vFn.IsISOFileName
    Assert(aFn!="",RT_String("%saFn Cannot be ''",myName))      aFn = aFn.RT_GetFullPathName    IsRiffA = aFn.IsRiffFileName    IsIsoA = aFn.IsISOFileName
    c=0 a=0
    Try { # 1st Try specialized AVI
        c = (IsRiffV)                            ? vFn.AviSource                                                                                                     : NOP
        (c.IsClip)                               ? RT_DebugF("AviSource opened Video\n  '%s'",vFn,name=myName)                                                       : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }
    Try {
        a = (c.IsClip && c.HasAudio && aFn==vFn) ? c : (IsRiffA) ? aFn.WavSource                                                                                     : NOP
        (a.IsClip && a.HasAudio)                 ? RT_DebugF("%s opened Audio\n  '%s'",(c.IsClip && c.HasAudio && aFn==vFn)?"AviSource":"WavSource",aFn,name=myName) : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }

    # Next try specialized ISO LSMash
    Try {
        IsOpenV=(c.IsClip && c.HasVideo)
        c = (IsIsoV)                       ? LSMASHVideoSource(vFn)                                                : c
        (IsIsoV)                           ? RT_DebugF("LSMASHVideoSource opened Video\n  '%s'",vFn,name=myName)   : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }
    Try {
        IsOpenA=(a.IsClip && a.HasAudio)
        a = (IsIsoA)                       ? LSMASHAudioSource(aFn)                                                : a
        (IsIsoA)                           ? RT_DebugF("LSMASHAudioSource opened Audio\n  '%s'",aFn,name=myName)   : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }

     # Next try FFMS2
    Try {
        IsOpenV=(c.IsClip && c.HasVideo)
        (!IsOpenV)    ? FFIndex(vFn)                                                    : NOP
        c=(!IsOpenV)  ? FFVideoSource(vFn)                                              : c
        (!IsOpenV)    ? RT_DebugF("FFVideoSource opened Video\n  '%s'",vFn,name=myName) : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }
    Try {
        IsOpenA=(a.IsClip && a.HasAudio)
        a=(!IsOpenA)  ? FFAudioSource(aFn)                                              : a
        (!IsOpenA)    ? RT_DebugF("FFAudioSource opened Audio\n  '%s'",aFn,name=myName) : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }

    # Next try LSmash non ISO Video
    Try {
        IsOpenV=(c.IsClip && c.HasVideo)
        c = (!IsOpenV && !IsIsoV)          ? LWLibavVideoSource(vFn)                                                : c
        (!IsOpenV && !IsIsoV)              ? RT_DebugF("LWLibavVideoSource opened Video\n  '%s'",vFn,name=myName)   : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }
    Try {
        IsOpenA=(a.IsClip && a.HasAudio)
        a = (!IsOpenA && !IsIsoA)      ? LWLibavAudioSource(aFn)                                                : a
        (!IsOpenA && !IsIsoA)          ? RT_DebugF("LWLibavAudioSource opened Audio\n  '%s'",aFn,name=myName)   : NOP
    } catch (msg) { RT_DebugF("Catch: %s",msg,name=myName) }

    Assert(c.IsClip, RT_String("%s failed open on\n  '%s'",myName,vFn))
    (!c.HasAudio && a.IsClip && a.HasAudio) ? AudioDubEx(c,a) : c
    (!HasAudio) ? RT_DebugF("Audio failed Open on\n  '%s",aFn,name=myName) : NOP
    return Last
}

[GetSeq("___FILE___")]

Return last
EDIT: You could put GetSeq() function (excluding client call code) into and avsi file in plugins, and just use this as template NON batch mode template)
Code:
#ASYNTHER Simple_AVI_LSmash_FFMS_Reader
[GetSeq("___FILE___")]
return last
EDIT: OR batch mode template
Code:
#ASYNTHER BATCH-Simple_AVI_LSmash_FFMS_Reader
FN = "___FILE___"
GetSeq(FN)
return last
__________________
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; 14th June 2019 at 01:00.
StainlessS is offline   Reply With Quote