problem mit Halbbilderkennungstool "CheckTopFirst"

  • Hallo,

    ich bin auf ein hervorragendes tool aufmerksam geworden, um die Halbbildfolge von z.B. gecapturten VHS-Aufnahmen herauszufinden. Das Plugin nennt sich CheckTopFirst.avsi und sieht folgendermaßen aus:

    function CheckTopFirst(clip v1){
    global top_hits=1
    global bot_hits=1
    global text = ""
    global text2 = ""
    v1 = assumeframebased(v1)
    global tff=assumetff(v1).separatefields().bob()
    global bff=assumebff(v1).separatefields().bob()
    istff = tff.subtitle("Is frame TFF: TRUE").frameevaluate("top_hits=top_hits+1.0")
    isnottff = tff.subtitle("Is frame TFF: FALSE").frameevaluate("bot_hits=bot_hits+1.0")
    outclip = conditionalfilter(tff,istff, isnottff, "yDifferenceFromPrevious(tff)+ydifferenceToNext(tff)","<","yDifferenceFromPrevious(bff)+yDifferenceToNext(bff)",false)
    outclip = frameevaluate(outclip,"text = "+chr(34)+"STATS: TFF = "+chr(34)+" + string(100.0*top_hits/(top_hits+bot_hits)) + " + chr(34) + "%"+chr(34))
    outclip = frameevaluate(outclip,"text2 = "+chr(34)+"STATS: BFF = "+chr(34)+" + string(100.0*bot_hits/(top_hits+bot_hits)) + " + chr(34) + "%"+chr(34))
    outclip = scriptclip(outclip, "Subtitle(text,y=50)")
    outclip = scriptclip(outclip, "Subtitle(text2,y=70)")
    return outclip
    }

    normalerweise ist es möglich, dieses plugin mit dem skript "FieldOrderTest.avs"
    zu nutzen. das sieht in meinem Fall z.B. so aus:

    #LoadPlugin("D:\Programme\AviSynth 2.5\MPEGDecoder.dll")
    #v1=mpegsource("d:\test.mpg")
    v1=AVISource("d:\test.avi")
    #v1=DirectShowSource("d:\test.avi")
    v2=ConvertToYV12(v1)
    CheckTopFirst(v2)


    Nun habe ich folgendes Problem: wenn ich den "FieldOrderTest" mit dem WMP oder Virtual Dub öffnen will kommt die Fehlermeldung:

    script error: there is no function named "CheckTopFirst"
    (C:\Programme\AviSynth2.5\FieldOrderTest.avs,line6)

    auf einem anderen Rechner (beide Windows XP) funktioniert das Ganze einwandfrei. :(

    Bin für jeden Tip dankbar.

  • Füge noch oben eine Zeile ein:

    Import("?:\*\CheckTopFirst.avsi")

    falls sich diese Datei nicht im AutoLoad-Verzeichnis von AviSynth befindet. Ansonsten kann AviSynth doch überhaupt nicht wissen, wo die Funktion definiert wurde, wenn du das nicht angibst.

  • hmm, die "CheckTopFirst.avsi" befindet sich im plugins ordner von avisynth. ich dachte das reicht aus. Wenn ich dich richtig verstanden habe, sollte der Skript "FiledOrderTest" also so aussehen:

    Import("C:\Programme\Avisynth2.5\plugins\CheckTopFirst.avsi")
    #LoadPlugin("D:\Programme\AviSynth 2.5\MPEGDecoder.dll")
    #v1=mpegsource("d:\test.mpg")
    v1=AVISource("d:\test.avi")
    #v1=DirectShowSource("d:\test.avi")
    v2=ConvertToYV12(v1)
    CheckTopFirst(v2)


    Dies führt dann zu folgender Fehlermeldung:

    Import: couldn't open "C:\Programme\Avisynth2.5\plugins\CheckTopFirst.avsi"
    (C:\Programme\Avisynth 2.5\FieldOrderTest.avs, line1)

  • Warum so eine irre komplizierte Routine?

    Avisource("xxxxxxxxx.avi")
    AssumeTFF()
    Separatefields()

    Wenn du jetzt das avs in Vdub lädst (Bild sieht dann in der Höhe gestaucht aus, da die Fields separiert sind) und Feld für Feld nach vorne gehst, siehst du ob der Ablauf "flüssig" ist, wenn dem so ist, hast du einen TFF Stream. Wenn's aber mehr so ein back-and-forth Effekt ist, dann mal oben anstatt AssumeTFF() ein AssumeBFF()
    einsetzen, wenns dann ok vom Ablauf her ist, hast du einen BFF Stream.

  • Hallo

    Guck doch mal ob die Endung Deiner *.avsi-Datei wirklich "avsi" ist, das "i" am Ende ist wichtig. :ja:
    Oder den Namen sonstwie falsch geschrieben hast, oder hast Du mehrere Versionen von Avisynth installiert und vielleicht den falschen Plugin-Ordner gewählt?

    Ich benutze dieses Script schon länger, es funktioniert wirklich prima.

  • incredible

    ich habe das tool wie gesagt schon mal erfolgreich ausprobiert. der vorteil ist der, dass man selbst gar nicht mehr nachschauen muss, ob es sprungeffekte gibt, sondern, dass man ein ergebnis hat von 98 zu 2 Prozent TFF oder BFF (oder bei progressivem material so etwas wie 55:45).

    ich habe versucht mal deinen tipp in die praxis umzusetzen. Ergebnis:

    Avisynth open failure: Script error: there is no function named "Assume TTF"
    (C:\Programme\Avisynth 2.5\halbbildtest.avs, line 2)

    :(

    dieses halbbildtest.avs sieht folgendermaßen aus:

    AviFileSource("d:\test.avi")
    AssumeTTF()
    Separatefields()

    Da kann man doch eigentlich nicht viel falsch machen, oder?

    Den Skript: "AVIFileSource("d:\test.avi")" öffnet Virtual Dub oder WMP ohne Probleme.

    Avisynth ist für mich absolutes Neuland, fehlen mir vielleicht irgendwelche dlls oder sonstwas???


    renes

    habe alles noch mal überprüft. die *.avsi ist korrekt geschrieben, denke ich. in jedem fall ist das "i" auch dran. auf der suche nach dem plugins ordner habe ich tatsächlich noch einen zweiten gefunden von avisynth 2.0. alles deinstalliert, inkl. avisynth.dll und nochmals 2.54 raufgespielt mit den oben beschriebenen ergebnissen...

  • Hallo

    "Dein" Avisynth scheint eine Version zu sein, welche mit gewissen Befehlen nichts anfangen kann. An Deiner Stelle würde ich nochmals alles deinstallieren und deine Platten nach Avisynth-Dateien absuchen. Ebenso die Registry von allen Avisynth-Einträgen säubern und Avisynth 2.54 erneut installieren.

  • incredible

    daran lags (hatte natürlich nix korrigiert, bin wie gesagt novize auf diesem gebiet). das ist in jedem fall auch eine gute lösung. habe in meinem fall TFF material vorliegen. wenn ich auf BFF überprüfe sind die sprünge sehr gut zu sehen.

    @ renes

    die version habe ich heute nochmal von der sourceforge.net seite gezogen. werde nochmals verfahren wie von dir vorgeschlagen. was die registry betrifft, gibt es da noch was ausser:

    HKEY_LOCAL_MACHINE\SOFTWARE\AviSynth mit den einträgen: standard und plugindir2_5

    many thanx an euch beide

    :daumen:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!