Hardwarebeschleunigung mit StageVideo

Die hardwarebeschleunigte Darstellung, die Videoskalierung, Farbkonvertierung und Blitting unterstützt, verstärkt die Leistungsvorteile der hardwarebeschleunigten Dekodierung. Auf Geräten mit GPU-Hardwarebeschleunigung können Sie ein flash.media.StageVideo-Objekt verwenden, um Video direkt über die Hardware des Geräts zu verarbeiten. Beim direkten Verarbeiten kann die CPU andere Aufgaben wahrnehmen, während das Video von der GPU verarbeitet wird. Im Gegensatz dazu verwendet die ältere Video-Klasse meist die Darstellung durch die Software. Das Darstellen per Software findet in der CPU statt und kann die Systemressourcen stark beanspruchen.

Derzeit bieten nur wenige Geräte vollständige Unterstützung für die GPU-Beschleunigung. Über die Bühnenvideo-Funktion können Anwendungen jedoch die verfügbare Hardwarebeschleunigung optimal nutzen.

Die Video-Klasse wird durch die StageVideo-Klasse nicht ersetzt. In Kombination bieten diese beiden Klassen stets eine optimale Videoanzeige, die auf die jeweiligen Ressourcen des Geräts abgestimmt ist. Anwendungen nutzen die Hardwarebeschleunigung, indem sie auf die entsprechenden Ereignisse warten und nach Bedarf zwischen StageVideo und Video wechseln.

Bei Verwendung der StageVideo-Klasse gelten einige Einschränkungen für die Verwendung von Video. Bevor Sie die StageVideo-Funktion nutzen, sollten Sie diese Richtlinien lesen und sicherstellen, dass sie in Ihrer Anwendung hinnehmbar sind. Wenn die Einschränkungen akzeptabel sind, sollten Sie die StageVideo-Klasse immer dann verwenden, wenn Flash Player erkennt, dass die hardwarebeschleunigte Darstellung verfügbar ist. Einzelheiten finden Sie unter Richtlinien und Einschränkungen .

Parallele Ebenen: Bühnenvideo und die Flash-Anzeigeliste

Beim Bühnenvideomodell kann Flash Player das Video von der Anzeigeliste trennen. Flash Player teilt die zusammengesetzte Anzeige auf zwei Ebenen in Z-Anordnung auf.

Ebene für Bühnenvideo
Die Ebene mit dem Bühnenvideo befindet sich im Hintergrund. Sie zeigt nur hardwarebeschleunigtes Video. Wegen dieser Architektur ist diese Ebene nicht verfügbar, wenn die Hardwarebeschleunigung auf dem Gerät nicht unterstützt wird oder nicht zur Verfügung steht. In ActionScript verarbeiten StageVideo-Objekte die Videos, die auf der Bühnenvideo-Ebene abgespielt werden.

Ebene für die Flash-Anzeigeliste
Die Elemente der Flash-Anzeigeliste werden auf einer Ebene zusammengesetzt, die sich vor der Bühnenvideo-Ebene befindet. Zu den Elementen der Anzeigeliste gehören alle Komponenten, die von der Laufzeit gerendert werden, darunter auch Steuerelemente für die Wiedergabe. Wenn keine Hardwarebeschleunigung verfügbar ist, können Videos nur auf dieser Ebene abgespielt werden. Dazu wird ein Objekt der Video-Klasse verwendet. Das Bühnenvideo wird immer hinter den Grafiken der Flash-Anzeigeliste angezeigt.

Grafik in Originalgröße anzeigen
Ebenen für die Videoanzeige

Das StageVideo-Objekt wird in einem rechteckigen Bereich des Bildschirms angezeigt, der am Fenster ausgerichtet und nicht gedreht ist. Objekte können nicht hinter der Bühnenvideo-Ebene angeordnet werden. Sie können jedoch die Ebene der Flash-Anzeigeliste verwenden, um andere Grafiken über der Bühnenvideo-Ebene anzuordnen. Bühnenvideo wird gleichzeitig mit der Anzeigeliste ausgeführt. So können Sie die beiden Mechanismen kombinieren, um einen einheitlichen visuellen Effekt zu erzielen, der auf zwei verschiedenen Ebenen beruht. Beispielsweise können Sie die vordere Ebene für Wiedergabesteuerelemente verwenden, mit denen das Bühnenvideo, das im Hintergrund ausgeführt wird, gesteuert werden kann.

Bühnenvideo und H.264-Codec

In Flash Player-Anwendungen sind zum Implementieren der Video-Hardwarebeschleunigung zwei Schritte erforderlich:

  1. Kodieren des Videos im H.264-Format

  2. Implementieren der StageVideo-API

Um beste Ergebnisse zu erzielen, sollten Sie beide Schritte ausführen. Über den H.264-Codec können Sie die Hardwarebeschleunigung optimal nutzen – von der Videodekodierung bis zur Darstellung.

Beim Bühnenvideo ist es nicht erforderlich, Daten von der GPU in die CPU zurückzulesen. Anders ausgedrückt: Die GPU sendet die dekodierten Bilder nicht an die CPU zurück, um sie mit den Objekten der Anzeigeliste zusammenzusetzen. Stattdessen blittet die GPU dekodierte und gerenderte Bilder direkt auf dem Bildschirm, hinter den Objekten der Anzeigeliste. Bei dieser Technik werden CPU und Arbeitsspeicher weniger stark beansprucht. Außerdem wird eine genauere Pixeldarstellung erzielt.

Richtlinien und Einschränkungen

Wenn das Video im Vollbildmodus ausgeführt wird, ist das Bühnenvideo immer verfügbar, sofern das Gerät die Hardwarebeschleunigung unterstützt. Flash Player wird jedoch auch in einem Browser ausgeführt. Im Browserkontext wirkt sich die wmode -Einstellung auf die Verfügbarkeit des Bühnenvideos aus. Wenn Sie Bühnenvideo verwenden möchten, sollten Sie nach Möglichkeit immer die Einstellung wmode="direct" verwenden. Bühnenvideo ist nicht mit anderen wmode -Einstellungen kompatibel, wenn nicht der Vollbildmodus genutzt wird. Diese Einschränkung hat zur Folge, dass die Verfügbarkeit des Bühnenvideos zur Laufzeit unvorhersehbar schwanken kann. Wenn der Benutzer beispielsweise den Vollbildmodus beendet, während Bühnenvideo angezeigt wird, wechselt das Video zurück in den Browserkontext. Wenn der wmode -Parameter des Browsers nicht auf "direct" eingestellt ist, kann es vorkommen, dass das Bühnenvideo plötzlich nicht mehr verfügbar ist. Flash Player verwendet mehrere Ereignisse, um Anwendungen über Kontextänderungen während der Wiedergabe zu informieren. Wenn Sie die StageVideo-API implementieren, sollten Sie ein Video-Objekt als Reserve verwenden, für den Fall, dass das Bühnenvideo nicht verfügbar ist.

Wegen seiner direkten Beziehung mit der Hardware gelten beim Bühnenvideo einige Einschränkungen hinsichtlich der Videofunktionen. Die folgenden Einschränkungen müssen bei Bühnenvideo beachtet werden:

  • Für jede SWF-Datei begrenzt Flash Player die Anzahl der StageVideo-Objekte, in denen gleichzeitig Video angezeigt werden kann, auf 4. Je nach den Hardwareressourcen des Geräts kann dieser Wert jedoch auch noch niedriger sein.

  • Die Videozeitgebung ist nicht mit der Zeitgebung von Inhalten, die die Laufzeitumgebung anzeigt, synchronisiert.

  • Der Videoanzeigebereich kann nur ein Rechteck sein. Kompliziertere Anzeigebereiche, zum Beispiel Ellipsen oder unregelmäßige Formen, können nicht verwendet werden.

  • Sie können das Video nicht drehen.

  • Die Bitmapzwischenspeicherung des Videos ist nicht möglich. Das BitmapData-Objekt kann nicht für den Zugriff auf das Video verwendet werden.

  • Sie können keine Filter auf das Video anwenden.

  • Sie können keine Farbtransformierungen auf das Video anwenden.

  • Sie können keinen Alpha-Wert auf das Video anwenden.

  • Mischmodi, die Sie auf Objekte auf der Anzeigenlistenebene anwenden, gelten nicht für Bühnenvideo.

  • Sie können das Video nur auf vollen Pixelgrenzen platzieren.

  • Obwohl das GPU-Rendern für die jeweilige Gerätehardware optimal ist, wird keine hundertprozentig identische Pixeldarstellung auf verschiedenen Geräten erzielt. Es treten geringfügige Abweichungen auf, die auf Unterschiede bei den Treibern und den Plattformen zurückzuführen sind.

  • Einige Geräte unterstützen nicht alle erforderlichen Farbräume. So bieten manche Geräte beispielsweise keine Unterstützung für BT.709, den H.264-Standard. In diesen Fällen kann BT.601 zur schnellen Anzeige verwendet werden.

  • Bühnenvideo kann nicht mit WMODE-Einstellungen wie „normal“, „opaque“ oder „transparent“ verwendet werden. Bühnenvideo unterstützt nur die Einstellung WMODE=direct , wenn es sich nicht im Vollbildmodus befindet. WMODE hat in Safari 4 oder höher und IE 9 oder höher keine Auswirkungen.

Videoplayer-Anwendungen sind in den meisten Fällen nicht von diesen Einschränkungen betroffen. Wenn diese Einschränkungen hinnehmbar sind, sollten Sie nach Möglichkeit immer Bühnenvideo verwenden.