Biete AviSynth-Timer ähnlich Showtime()

  • Ich hoffe das hier ist der richtige Bereich eine von mir erstellte Funktion vorzustellen.

    Ich wollte einen Timer haben und die bei AviSynth mitgelieferte Funktion ShowTime() war mir nicht umfangreich genug, da hab ich mir was passendes zusammen gescriptet.

    Benötigt:
    Gavinos GRunT-Plugin - http://forum.doom9.org/showthread.php?t=139337
    stickboys jdl-util - http://avisynth.org/stickboy/jdl-util.avsi

    Das Ganze enthält zwei Funktionen, timer() und timer_cut().


    Syntax:

    timer(clip clp, string "mode", bool "reverse", int "color", float "size", int "x", int "y", int "align")

    timer_cut(clip clp, string "mode", int "start", int "end", bool "reverse", bool "showstart", bool "showend", int "color", float "size", int "x", int "y", int "align")


    timer() blendet einen Timer ein und hat folgende Optionen:
    mode - der Modus, ob mit oder ohne Stunden, Millisekunden, etc:
    "hmmss": 0:04:17
    "mmss": 04:17
    "mss": 4:17
    "mssms1": 4:17.3
    "mssms2": 4:17.37
    "mssms3": 4:17.375
    "mssms": 4:17.375
    "mmssms1": 04:17.3
    "mmssms2": 04:17.37
    "mmssms3": 04:17.375
    "mmssms": 04:17.375
    "hmmssms1": 0:04:17.3
    "hmmssms2": 0:04:17.37
    "hmmssms3": 0:04:17.375
    "hmmssms": 0:04:17.375

    reverse - Lässt den Timer rückwärts laufen.
    color - Farbe (Standart weiß)
    size - Schriftgröße
    x, y - Position des Timers.
    align - Timer-Position relativ zu x, y

    timer_cut() blendet den Timer zwischen Frame a und Frame b ein. Die Optionen sind dieselben wie bei timer(), plus folgender zusätzlicher:
    start, end - Start- und Endframe für den Timer.
    showstart, showend - Wenn beide true gesetzt sind, wird der Timer die ganze Zeit eingeblendet, startet bei Frame a und friert bei Frame b ein. Man kann auch nur den Anfang oder das Ende einblenden.


    Beispiele:

    Code
    loadplugin("GRunT.dll")import("jdl-util.avsi")import("timer.avs")colorbars().trim(0,3000)timer()timer(mode="mssms1",color=color_green,size=66.6)timer_cut(mode="mss",start=500,end=2500,showstart=true,showend=false,size=99.9,x=150,y=200)
    Code
    loadplugin("GRunT.dll")import("jdl-util.avsi")import("timer.avs")blankclip(length=15001,width=320,height=120,fps=1000)timer(mode="mssms3",size=85,y=15)


  • Habe das Script nochmals überarbeitet:

    PHP
    gelöscht

    Ein Problem das ich aber noch habe ist, dass ich globals verwenden muss. Weiß jemand wie ich das auch ohne hin bekomme?


    Und ich habe spaßeshalber noch dieses Skript geschrieben (erzeugt rotierenden Balken):

  • Ob irgendwer rotierende Balken im Bild mag ... Geschmackssache; aber wenn dir das Minus zu kurz ist, versuch doch mal den "Gedankenstrich" (Alt+Num:0151 = —).

    Eigentlich ist es nur im Sinne der Sicherheit, dass Variablen nur im jeweiligen "Blickfeld" (Scope) bekannt sind: Entweder nur innerhalb der Funktion, in der sie durch erstmalige Verwendung deklariert wurden, oder außerhalb jeder Funktion. Nur so kann man halbwegs sicher sein, dass man nicht aus Versehen in importierten Funktions-Skripten etwas durcheinanderbringt, nur weil man in seinem eigenen Skript eine Variable mit dem gleichen Namen verwendet, ohne zu wissen, welche Variablen in den Funktionen verwendet werden. Was du nicht als Parameter an die Funktion weitergibst, muss global verfügbar sein, um eine Variable auch innerhalb der Funktion zu kennen, wenn sie außerhalb der Funktion deklariert wurde. Um Globals zu vermeiden, müsstest du also mode an FormatTime() als Parameter weiterreichen, und den String für ScriptClip() so zusammensetzen, dass die darin enthaltenen Parameterwerte zu Literalen aufgelöst werden (also raus aus dem String und mit String(variable) verketten).

  • Es gibt zwei große Neuerungen:
    1. Das Script verwendet keine Globals mehr, also können die Funktionen jetzt mehrfach in einem Script verwendet werden.
    2. timer_cut() funktioniert jetzt auch wenn start=0 und/oder end=framecount-1.

    Möglich wurde es durch Gavinos GRunT-Plugin und stickboys jdl-util:
    http://forum.doom9.org/showthread.php?t=139337
    http://avisynth.org/stickboy/jdl-util.avsi

Jetzt mitmachen!

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