Erweiterte Flash Grundlagen: Streaming / Video in FLV konvertieren

Artikel: Streaming / Video in FLV konvertieren , Flash - Erweiterte Grundlagen | 13.03.2008

Dieses Thema ist für die meisten das interessanteste Thema in Flash, in diesem Artikel werde ich auf die Arten von Streaming eingehen und auch genauere Infos zum Thema Streaming geben.

Inhalt

Einleitung

Herkunft und Geschichte

Streaming so wie wird es kennen, gibt es seit Mitte der 90er Jahre. Jedoch hab es schon Ende der 80er Jahre einige Projekte die erste Ansätze von Streaming enthalten.
Das bekannteste Projekt aus dem 80er Jahre ist hierbei das Multicast Backbone, hier wurden komprimierte Audio Dateien angeboten, die jedoch erst auf den Rechner geladen werden mussten und meist manuell entpackt werden mussten.
Es gab jedoch auch versuche dieses entpacken automatisch durchzuführen was einem progressivem Streaming schon sehr nah kommt.

Trojan Room Coffee Machine

Trojan Room Coffee Machine war eines der ersten Versuche im Jahr 1992 von der Firma ATM Networks.
Hierbei wurde von einer schwarz-weiß Kamera dreimal in der Minute ein Bild der Füllstandsanzeige der firmeneigenen Kaffeemschine aufgenommen.
Dieses Bild wurde von einer eigenen Software digitalisiert und konnte von jedem Mitarbeiter über eine URL angesehen werden.
Auch diesem Beispiel kommt der heutigen Webcam sehr nahe.

NetAid Konzert

Das NetAid Konzert zählt zu den ersten großen Streaming Ereignis.
Hier wurden im Oktober 1999 das 11 stündige Konzert welches in Genf, London und New York statt fand von diversen Fernseh- und Radiosendern übertragen.
Die Übertragung ins Internet erfolgte über 300 Linux Server mit Hilfe von Real Media Format.
Jedoch war die Ton und Bildqualität nicht die beste und das Video lief nicht ganz synchron ab.
So das man hier noch weit von heutigen Standard entfernt war.

Heutige Zeit

Aktuell ist das heute Streaming sehr ausgereift, es ist ohne weiteres Möglich Streamings in TV Qualität zu senden und auch zu Empfangen.
Jedoch setzt dies immer voraus, das auf beiden Seiten die notwendige Technik vorhanden ist.
So bringt der beste Streaming Server nichts, wenn der User der sich das Streaming ansehen will ein altes Betriebssystem oder alte PC Hardware besitzt (2-3 Jahre alt).

Progressiv Streaming

Es gibt insgesamt 2 Arten von Streaming, das progressive Streaming und das realtime Streaming.
Da das progressive Streaming mehr verbreitet ist, werde ich zuerst dieses erläutern.

Technischer Hintergrund

Beim progressivem Streaming liegen die Streamingdateien auf einem ganz normalen Webserver, in den meisten Fällen werden hier 3 Version abgelegt.
In den meisten Fällen sind das Version für hohe Bandbreite, mittlere Bandbreite und niedrige Bandbreite, welche über eine Bandbreiten erkennen dann automatisch je nach Bandbreite beim User geladen werden.

Das Streaming wird beim User runtergeladen und während des herunterladen abgespielt. Der User kann also nur den Teil ansehen der bereits runtergeladen worden ist.

Zusammenfassung

  • Einfach zu realisieren
  • Normaler Download über einen Webserver
  • User kann sich nur den Teil ansehen der bereits runtergeladen worden ist, ein Vorspulen oder das Springen an eine bestimmte Stelle ist nicht möglich.
  • Geringere Serverbelastung, jedoch wird im Normalfall mehr Bandbreite benötigt
  • Bandbreiten Schwankungen habe teilweise keine größeren Auswirkungen

Realtime Streaming

Das Realtime Streaming ist ein richtiges Streaming, hierfür werden Streamingserver benötigt die das Video "on fly" komprimieren und dem User zur Verfügung stellen.

Technischer Hintergrund

Der User fordert das Streaming bei dem Streaming Server an, dieser prüft die Bandbreite und das gewünschte Format und komprimiert in echtzeit (realtime) das Video in der gewünschten Qualität und Größe.
Im Normalfall liegt also nur eine Version des Videos auf dem Server, die der Streaming Server auf Anfrage dem entsprechend umwandelt.
Wenn der User nun vorspulen oder zu einer bestimmten Stelle springen möchte, so sendet er an den Streamingserver ein entsprechenden Request und dieser berücksichtigt diesen.
Es wird also immer nur der Teil vom Server zur Verfügung gestellt den der User benötigt.

Zusammenfassung

  • Genaue Plannung nötig z.B. Anzahl gleichzeitig Verbindungen / Anzahl Streamingserver
  • Streaming Server wird benötigt, diese sind in der Regel sehr teuer
  • User kann ohne weiteres Vorspulen oder/und zu einer bestimmten Stelle springen
  • Hohe Serverbelastung, jedoch geringer Traffickverbrauch, da nur die Daten gesendet werden, die der User aktuell ansehen möchte
  • Bandbreiten Schwankungen führen zu einem stoppen des Videos

Streaming erstellen

Da einfachste Format für progressives Streaming für Flashdateien ist das so genannte FLV Format (FlashVideoFormat).
Adobe Flash bietet hier mit Hilfe des mitgelieferten Video Encoder eine recht einfache Art an, solche Dateien zu erstellen.
Alternativ kann hierfür auch RivaEncoder verwendet werden, welcher als Freeware verfügbar ist.

Flash Video Encoder

Der Flash Video Encoder ist Bestandteil von Flash 8 Professional und Flash 9 Professional und erlaubt es komfortabel FLV Dateien zu erstellen.

Nachdem das Programm gestartet worden ist befindet man sich in der Übersicht, hier kann man Dateien zu der Warteschlange hinzufügen.
Es können verschiedene Dateien und Qualität in die Warteschlange hinzugefügt werden, jedoch sollte man jede Qualität kurz vorher testen bevor man eine Reihe von Videos in der falschen Qualität umwandelt.
Die Standardeinstellung ist eine Qualität von 400kb was in etwas DSL 4000 entspricht.

Wählt man ein Video aus und klickt auf Settings so kann man diese Einstellungen weiter bearbeiten man kann z.B: eigene Profile erstellen oder aber eine andere Bandbreite wählen.
Falls man eigene Profile erstellt sollte man immer drauf achten worauf mehr Wert gelegt wird ob auf das Video oder auf den Ton.
Das encodieren kann je nach Einstellungen und Quellvideo einige Zeit in Anspruch nehmen.

Riva FLV Encoder

Der Riva FLV Encoder ist von der Firma Riva und als Freeware zu erhalten.
Ihr könnte diesen unter http://www.rivavx.com/?encoder in dem Bereich Download -> "Riva FLV Encoder 2.0" kostenlos runterladen.
Dieser Encoder unterstützt die Standardcodec, nicht jedoch den Sorenson Spark Codec, da dieser kostenpflichtig ist.
Bei der Installation kann auch gleich ein passender FLV Player installiert werden, welche man keinesfalls vergessen sollte.

Das Programm bietet nach den Start alle nötigen Optionen an, aus erstes sollte das Quellvideo ausgewählt werden und anschließend ein entsprechende Vorlage ausgewählt werden.
Bitte darauf achten, die Standardgröße von 640x480 anzupassen, dies in für die meisten normalen Videos viel zu groß.
Dieses Programm greift auf die installierten Codecs zurück es können als nur Videos konvertiert werden wo entsprechenden Codecs vorhanden sind.

Streamingqualität erhöhen

Wenn ein Video mit den Standardeinstellungen konvertiert wird, hat dies meist eine sehr schlechte Qualität diese kann man auf folgende Arten verbessern:

Videoqualität erhöhen

  • Quellvideo vor bearbeiten und auf die richtige Größe bringen z.B: mit VirtualDub und Lazoorfilter
  • Die Bilder pro Sekunde verringern, im Normalfall reichen 15 Bilder für eine flüssige Bewegung
  • Die Videogröße verkleinern und Adobe Flash das Video größer darstellen lassen
  • Sound von Stereo auf Mono stellen und evt. Bitrate auf 22 kHz oder niedriger runter setzten
  • Die Bitrate für das Video erhöhen, jedoch wird dadurch auch mehr Bandbreite benötigt

Soundqualität erhöhen

  • Quellaudio vorbearbeiten und entsprechend auf die gewünschte Frequenc sampeln evt. MP3Pro
  • Quellaudio von 16 Bit auf 8 Bit verringern, da im Normalfall die 8 Bit Information ausreichen
  • Den Sound von Mono auf Stereo umstellen und die Bitrate auf 22 kHz oder höher setzten
  • Die Bitrate für das Video verringern und evt. die Auflösung des Videos verkleinern

Allgemeine Hinweise zur Optimierung

Wie man hier sieht gibt es verschiedene Möglichkeiten ein Streaming zu optimieren, wer sich sehr gut mit Videos auskennt kann sogar die Anzahl der Keyframes erhöhen und verringern was im Normalfall um die 100kb bei einer 5 MB großen Datei bringt.
Das Quellvideo und das Quellaudio sollten immer vorbearbeitet werden, da so das Video noch mit filtern verbessert werden kann und die Audiodatei von 16 Bit auf 8 Bit verringert werden kann.
Jedoch ist es schwer eine allgemeine Regel für alle Situationen zu finden, somit ist bei einem Musikvideo die Soundqualität in der Regel wichtiger als das Bild.
Bei einem Trailer für einen Actionfilm oder für ein Spiel ist dagegen die Videoqualität wichtiger.
In der Regel werden wie schon erwähnt 3 Version erstellt, eine für ISDN / Modem User, eine für DSL 1000 User und eine für DSL 6000 und schneller.
Es ist jedoch immer so eine Sache ob man arme ISDN / Modem User wirklich mit einem Video quälen will, da die Qualität nicht die beste sein wird.

Technische Umsetzung

Für die technische Umsetzung in ActionScript für Adobe Flash gibt es ein Tutorial unter /actionscript/erweiterte-grundlagen/streaming.

Beispiele für Streaming in Adobe Flash

Das bekannteste und größte Beispiel für Streaming über Adobe Flash ist YouTube.com und GoogleVideo.
Hier wird über ein progressives Streaming die entsprechende FLV Datei in den eigenen FLV Player geladen und angezeigt.
Anbei einige Beispiele von diesen beiden Portalen:

Beispiel YouTube