Bezeichnung
PlayVideo -- startet die Wiedergabe eines Videos (V5.0)
Übersicht
PlayVideo(id[, x, y, table])
Beschreibung
Dieser Befehl startet die Wiedergabe des in id angegebenen Videos. Dieses Video muss entweder mit der Präprozessor-Anweisung @VIDEO oder dem Befehl OpenVideo() geöffnet worden sein. Die optionalen Argumente x und y legen fest, wo auf dem Display das Video erscheinen soll. Wenn Sie diese Argumente nicht angeben, wird PlayVideo() die Koordinaten vom Befehl SetVideoPosition() verwenden. Wenn Sie SetVideoPosition() für dieses Video nicht aufgerufen haben, wird standardmäßig die Position auf 0:0 (linke obere Ecke des Displays) benutzt.

PlayVideo() arbeitet in einer asynchronen Weise. Nachdem Sie ein Video gestartet haben, können Sie die Wiedergabe mit den Befehlen StopVideo() oder StopLayer() steuern, je nachdem ob Sie Normale- oder Ebenenwiedergabemodus verwenden.

Hollywood unterstützt zwei verschiedene Videowiedergabemodi: Normale und Ebenenwiedergabe. Normale Wiedergabe ist der schnellste und optimierteste Modus, da er beispielsweise die Hardwarebeschleunigung durch die Verwendung Video-Overlays nutzen kann. Der Nachteil des Normalmodus ist, dass er einige Einschränkungen hat (siehe unten für weitere Informationen). Ebenenwiedergabemodus ist sehr flexibel. Da Ihr Video in einer Hollywoodebene geschrieben wurde, können Sie alle Ebenenbefehle mit Ihrem Video verwenden, wie z.B. drehen, Transparenz und Übergangseffekte oder spezielle Bildfilter anwenden. Der Nachteil des Ebenenwiedergabemodus ist, dass er ziemlich langsam ist, weil er nicht die Hardwarebeschleunigung verwenden kann. Somit benötigen Sie viel rohe CPU-Leistung, um in diesem Modus anständige Einzelbildraten zu erhalten. In den meisten Fällen sollte der normale Wiedergabemodus ausreichend sein. Ebenenwiedergabemodus ist nur dann erforderlich, wenn Sie während der Videowiedergabe erweiterte Funktionalität anwenden wollen.

Es ist wichtig zu beachten, dass PlayVideo() als Standard den normalen Wiedergabemodus verwendet, auch wenn Ebenen für das aktuellen BGPic aktiviert ist. Wenn PlayVideo() Ebenenwiedergabe verwenden soll, werden Sie dies explizit angeben müssen, indem Sie den Tag UseLayer im optionalen Argument table auf True setzen.

Normaler Wiedergabemodus kommt mit der Einschränkung, dass Videos immer über allem anderen angezeigt wird. Das bedeutet, dass es für Sie unmöglich ist, auf einem Video zu zeichnen. Stattdessen werden alle Grafikbefehle immer unter dem Videobereich gezeichnet. Auch Sprites werden nie über der Videografik erscheinen. Außerdem wird das Video solange sichtbar bleiben, bis Sie StopVideo() aufrufen. Ein anhalten des Videos wird es nicht aus dem Display entfernen. Stattdessen wird das aktuell angezeigte Bild eingefroren werden, bis Sie ResumeVideo() aufrufen. Wenn Sie ein Video vollständig aus dem Display entfernen möchten, müssen Sie immer den Befehl StopVideo() benutzen. Wenn Sie ein Video in der normalen Wiedergabe bewegen oder die Größe ändern möchten, müssen Sie die Befehle SetVideoPosition() und SetVideoSize() für diese Aufgabe verwenden.

Im Ebenenwiedergabemodus können Sie alle Befehle der Ebenenbibliothek von Hollywood verwenden, um die Videowiedergabe zu steuern, d.h. Sie können die Videogröße und Ausrichtung mit den Befehlen ScaleLayer() und RotateLayer() neu definieren sowie die z-Reihenfolge mit dem Befehl SetLayerZPos() ändern. Sie können mit den Befehlen ShowLayer() und HideLayer() Videos ein- und ausblenden sowie Transparenz oder Filter mit SetLayerTransparency() und SetLayerFilter() anwenden. Alle Befehle der Ebenenbibliothek von Hollywood können mit Video-Ebenen verwendet werden. Zum Stoppen oder Anhalten einer Video-Ebene, verwenden Sie die Befehle StopLayer() und PauseLayer(). Um an eine neue Position innerhalb des Videos zu springen, verwenden Sie SeekLayer(). Mit SetLayerVolume() ändern Sie die Lautstärke einer Video-Ebene.

Bitte beachten Sie, dass Ebenenwiedergabe nur dann möglich ist, wenn das Video mit dem eingebauten Videotreiber oder einem Plugin geöffnet wurde. Ebenenwiedergabe wird nicht unterstützt, wenn die Videowiedergabe über den Treiber des Host-Betriebssystem läuft. Sie können den Videotreiber mit dem Tag Loader des Befehls OpenVideo() oder der Präprozessor-Anweisung @VIDEO ändern.

Es gibt keine Limits, wie viele Videos gleichzeitig abgespielt werden können. Hardwarebeschleunigung kann jedoch oft nur für ein einzelnes Video verwendet werden. Wenn mehrere Videos gleichzeitig abgespielt werden, wechselt oft Hollywood auf Softwarewiedergabe, die langsamer ist. Bitte beachten Sie auch, dass die Videowiedergabe im Allgemeinen eine starke CPU benötigt. 68k-Prozessoren sind für diese Aufgabe viel zu langsam (außer auf WinUAE).

Beachten Sie, dass wenn ein neues BGPic mit dem Befehl DisplayBGPic() angezeigt wird, Hollywood automatisch alle Videos im normalen Modus stoppt. Videos im Ebenenwiedergabemodus werden jedoch weiterhin abgespielt, wenn das BGPic geändert wurde. So müssen Sie explizit die Video-Ebenen mit dem Befehl StopLayer() stoppen, bevor Sie das neue BGPic anzeigen.

Ab Hollywood 6.0 akzeptiert PlayVideo() das optionale Argument table, um die folgenden Optionen zu konfigurieren:

UseLayer:
Wenn Sie diesen Tag auf True setzen, wird PlayVideo() den Ebenenwiedergabemodus verwenden. Sie müssen Ebenen aktivieren, bevor Sie diesen Tag nutzen können. Siehe Einführung in die Ebenentechnik für Details. Wenn der Ebenenwiedergabemodus verwendet wird, wird dieser Befehl eine neue Ebene des Typs #VIDEO zum Ebenenstapel hinzuzufügen. Siehe oben für weitere Informationen über den Unterschied zwischen normalen und Ebenenwiedergabemodus. Der Standardwert ist False. (V6.0)

Channel:
Bestimmt den Kanal für die Wiedergabe der Audiospur des Videos. In der Standardeinstellung wählt PlayVideo() automatisch einen freien Kanal und liefert eine Fehlermeldung, wenn es keinen freien Kanal hat. Um dieses Verhalten zu ändern, können Sie dieses Feld verwenden. Wenn angegeben, wird es immer die Audiowiedergabe auf diesem Kanal erzwingen. Wenn der Kanal bereits abgespielt wird, wird er zunächst gestoppt werden. (V6.1)

Wenn der Ebenenwiedergabemodus verwendet wird, können Sie auch eine oder mehrere der Standard-Tags zum Zeichnen im optionalen Argument table angeben. Siehe Standard-Tags zum Zeichnen für weitere Informationen über die Standard-Tags, die fast alle Zeichnungsbefehle von Hollywood unterstützen.

Eingaben
id
Identifikator des Videos, welches abgespielt werden soll
x
optional: gewünschte x-Position für das Video (voreingestellt ist die Position, welche Sie mit dem Befehl SetVideoPosition() definiert haben oder 0)
y
optional: gewünschte y-Position für das Video (voreingestellt ist die Position, welche Sie mit dem Befehl SetVideoPosition() definiert haben oder 0)
table
optional: Tabelle für weitere Optionen (V6.0)
Beispiel
Siehe OpenVideo


Navigation zeigen