View Single Post
Old 22nd July 2019, 21:58   #14  |  Link
StainlessS
HeartlessS Usurer
 
StainlessS's Avatar
 
Join Date: Dec 2009
Location: Over the rainbow
Posts: 10,980
Wanna try this.

GetSeq.avsi
Code:
# GetSeq.avsi

Function GetSeq(String vFn,String "aFn",Val "fpsNum",Val "fpsDen") {
/*
    Req:- RT_Stats, FFMS, LSmash.

    Specify FrameRate using fpsnum (Numerator) and fpsden (Denominator)    # *** INGNORED if AVI ***
        num only,  eg fpsnum=25.0,               FrameRate = 25.0  FPS
        num & den, eg fpsnum=24000 fpsden=1001,  FrameRate = 23.976 FPS (Both should be type Int).
        neither specified                        FrameRate = UnDefined, ie whatever source filter thinks it is.
        ALWAYS:- use named args if using fpsnum/fpsden, argument order may change.
*/
    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
    def = fpsnum.Defined ? (fpsden.Defined ?1:0) : (!fpsden.Defined) ? 2 : -1    # 0=NumOnlyDef, 1=BothDef, 2=NoneDef, -1=DenOnlyError
    Assert(0<=def,myName+"Cannot specify framerate using fpsden only")
    #              Rate=num            :  Rate=num/den             : Rate=Undefined
    num=(def==0) ? Round(fpsnum * 1000): (def==1) ?    Int(fpsnum) : RT_Undefined
    den=(def==0) ?                1000 : (def==1) ?    fpsden      : RT_Undefined
    #
    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,fpsnum=num,fpsden=den)                          : 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,fpsnum=num,fpsden=den)                        : 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,fpsnum=num,fpsden=den)                         : 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
}
EDIT: Oops, cockup with the names fpsnum/num fpsden/den. Fixed.

GetSeq_Test.avs
Code:
######
#GetSeq_Test.avs
######

#FN="10Bit_Standard8_Scan_16FPS.avi"     # This 10 bit dont load with Avisource(), [leastwise not on my system, codec v210, and no audio]
#FN="ALTEST2.mp4"
#FN="heima_720p_500.mp4"
FN="tears_of_steel_1080pwebm.webm"

FN=RT_GetFullPathName(FN)

Getseq(FN,fpsnum=33000,fpsden=1001)     # Test 33000/1001
Info
EDIT: DebugView output
Code:
00000040    22:24:39.471    InitExternalPlugins:
00000041    22:24:39.471    InitExternalPlugins: Auto load plugins script ENTRY
00000042    22:24:39.471    InitExternalPlugins:
00000043    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo:
00000044    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: VersionString      = 'AviSynth+ 0.1 (r2900, MT, i386)'
00000045    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: Avisynth Bitness   = 32
00000046    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: ProcessName        = 'C:\Program Files (x86)\DAUM\PotPlayer\PotPlayerMini.exe'
00000047    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: OSVersionString    = 'Windows 7 (x64) Service Pack 1.0 (Build 7601)'
00000048    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: OSVersionNumber    = 6.100000
00000049    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: CPUName            = 'Intel(R) Core(TM)2 Quad CPU Q9550 @ 2.83GHz / Yorkfield (Core 2 Quad) 6M'
00000050    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: Cores              = 04:04 (Phy:Log)
00000051    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: CPU Extensions     = 'MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1'
00000052    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: Total Memory       = 12221MB
00000053    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: Avail Memory       = 9890MB'
00000054    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: Screen Res         = 1920x1080
00000055    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: Screen BitPerPixel = 32
00000056    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo: Time               = 'Monday 22 July 2019 22:24:39[GMT Daylight Time]'
00000057    22:24:39.471    InitExternalPlugins:ShowAvsInitInfo:
00000058    22:24:39.471    InitExternalPlugins:AvsInit_Load_CPP_Plugin: DGDecode.DLL                     LOADED   OK
00000059    22:24:39.471    InitExternalPlugins:AvsInit_Load_C_Plugin:   ffms2.dll                        LOADED   OK
00000060    22:24:39.487    InitExternalPlugins:AvsInit_Import_Avsi:     ffms2.avsi                       IMPORTED OK
00000061    22:24:39.487    InitExternalPlugins:AvsInit_Load_CPP_Plugin: LSMASHSource.dll                 LOADED   OK
00000062    22:24:39.830    GetSeq: FFVideoSource opened Video
00000063    22:24:39.830    GetSeq:   'D:\GetSeq_Test\tears_of_steel_1080pwebm.webm'
00000064    22:24:40.017    GetSeq: FFAudioSource opened Audio
00000065    22:24:40.017    GetSeq:   'D:\GetSeq_Test\tears_of_steel_1080pwebm.webm'
And for another audio-less 10 bit file
Code:
00000127    22:28:31.526    GetSeq: Catch: AVISource: couldn't locate a decompressor for fourcc v210
00000128    22:28:31.526    GetSeq: (D:\GetSeq_Test\GetSeq_Test.avs, line 26)
00000129    22:28:31.604    GetSeq: FFVideoSource opened Video
00000130    22:28:31.604    GetSeq:   'D:\GetSeq_Test\10Bit_Standard8_Scan_16FPS.avi'
00000131    22:28:31.604    GetSeq: Catch: FFAudioSource: No audio track found
00000132    22:28:31.604    GetSeq: (D:\GetSeq_Test\GetSeq_Test.avs, line 55)
00000133    22:28:31.619    GetSeq: Catch: LWLibavAudioSource: failed to get the audio track.
00000134    22:28:31.619    GetSeq: (D:\GetSeq_Test\GetSeq_Test.avs, line 67)
00000135    22:28:31.619    GetSeq: Audio failed Open on
00000136    22:28:31.619    GetSeq:   'D:\GetSeq_Test\10Bit_Standard8_Scan_16FPS.avi
__________________
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; 22nd July 2019 at 23:45.
StainlessS is offline   Reply With Quote