PlayVideo(id[, x, y, table])
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:
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:
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.