[id] = GetVideoFrame(brushid, frame, videoid[, unit])
brushid
müssen Sie eine
ID für den Pinsel übergeben (alternativ können Sie auch Nil
für die automatische ID-Auswahl angeben).
Im Argument frame
müssen Sie festlegen, welches Einzelbild
des Videos konvertiert werden soll und im Argument videoid
geben sie die ID des Videos ein.
Das optionale Argument unit
wird verwendet, um festzulegen,
wie der Wert in frame
interpretiert werden sollte. Wenn
unit
auf 0 gesetzt ist, dann wird der Wert in frame
als
absoluter Einzelbildindex interpretiert. Dies ist auch die
Standardeinstellung. Wenn unit
auf 1 gesetzt ist, dann wird
der Wert in frame
als Zeitstempel in Millisekunden angesehen
und GetVideoFrame()
wird das Einzelbild an diesem Zeitstempel
konvertieren. Es wird empfohlen, unit
mit dem Wert 1 für
den Zugriff auf Einzelbilder zu verwenden, da dies in der Regel
viel schneller ist. Wenn Sie trotzdem Einzelbilder durch ihren
absoluten Index bestimmen müssen, lesen Sie bitte die untenstehende Warnung.
Bitte beachten Sie, dass der Zugriff auf Einzelbilder durch den absoluten Index ist in der Regel eine sehr aufwendige Operation ist, da Hollywood für die meisten Videoformate den ganzen Weg vom Video durchlaufen muss, bis das angeforderte Einzelbild erreicht ist. Dies erfordert viel Zeit und ist daher nur von begrenztem praktischen Nutzen. Jedoch gibt es einen Sonderfall, wo der Zugriff über den absoluten Index sehr effizient ist, und das wäre beim sequentiellen auslesen der Einzelbilder eines Videos. "Sequentielles auslesen" bedeutet, dass Sie ein Bild nach dem anderen aus dem Video lesen (zuerst Einzelbild 1, dann Einzelbild 2, dann Einzelbild 3, etc). Dies kann sehr schnell erfolgen. Was hingegen wieder viel Zeit in Anspruch nimmt, ist das Auslesen der Einzelbilder in Rückwärtsrichtung (zuerst Einzelbild 10, dann Einzelbild 9, nachher Einzelbild 8, etc.), oder bei großen Sprüngen zwischen den Einzelbilder (Nummer 1, dann Nummer 1000, nachher Nummer 5000 etc.). Sequentielles lesen wird in diesen Fällen effizienter sein.
Um die genaue Anzahl der Einzelbilder eines Videos herauszufinden,
können Sie den Befehl GetAttribute() mit dem Objekttyp #VIDEO
und dem Attribut #ATTRNUMFRAMES
verwenden.
unit
festgelegtframe
; dies
kann entweder 0 sein, womit das Argument frame
einen absoluten
Einzelbildindex beinhaltet oder 1, wodurch das Argument frame
einen Zeitstempel in Millisekunden verwendet (Standard ist 0).brushid
übergeben
wurde (siehe oben)my_frame = GetVideoFrame(Nil, 1, 2) DisplayBrush(my_frame, #CENTER, #CENTER)Der obige Code speichert das Einzelbild 1 vom Video 2 in einem neuen Pinsel. Der Pinsel wird dann in der Mitte des Displays angezeigt.