HeartlessS Usurer
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
Last edited by StainlessS; 22nd July 2019 at 23:45.
|