VIDEO STREAMING

5. Anforderungsanalyse

In der Anforderungsanalyse stelle ich zuerst die Abgrenzungskriterien vor, um zu den MUSS-SOLL-KANN Kriterien überzugehen. Die Kriterien sind in Teil 5.2. für den Webencoder konzipiert. Die Anforderungen an eine Benutzerschnittstelle wurden separat im dritten Teil erläutert.

5.1. Abgrenzungskriterien

Bei der vorgestellten Arbeit handelt es sich nicht um:

  • Ein Skript zum automatischen Einbinden von Videoinhalten in Blogs wie etwa WordPress
  • Einen sog. Playlistgenerator, der existierende Inhalte auf einer Webseite zusammenfügt
  • Einen Medienplayer mit vordefiniertem Frontend und besonderen Funktionalitäten, wie bspw. Metadaten für Musik und Filme
  • Eine komplette Web API zur Gestaltung der Medieninhalte, Verwaltung der Benutzer, statistischen Vermessung der Useraktivität, Foren, Kommentare, Verlinkung, Werbung, etc.

Das vorgestellte Programm macht jedoch von einigen der o.g. Werkzeuge Gebrauch, wie die Erstellung von .m3u-Playlisten der generierten Medieninhalte sowie OpenGraph Metadaten zur menschlich lesbaren Kennzeichnung der Inhalte im Social Web84.

5.2. MUSS-SOLL-KANN Analyse – REST API / Transcoder

Die vorgestellte Anforderungsanalyse beschreibt einen API-Server ohne Nutzerinterface. Mittels des http-Protokolls kann die REST API jedoch komfortabel und sicher von einer Smartphone App oder einer AngularJS-Webseite angesteuert werden, deren Beispiel in Teil 5.3. beschrieben wurde.

Nr.WortlautMUSSSOLLKANNKommentar
1Webupload von DateienX

Upload zwecks Transkodierung
2cURL-Bibliothek für Upload v. http/s,ftp URI‘s
X
Automatischer Upload von Mediendateien aus dem Internet
3Integration des aria2-client

XAutomatischer Upload von http/s, ftp, sftp, magnet, usw. -URI‘s
4Transkodierung einer Audio-/Videodatei in ein WebstreamingformatX

Basiskonzept der Arbeit: „Automatisches Videowebpublishing“.
5Quelldateianalyse mit ffprobeX

Wie hoch ist die Qualität der Quelldatei?
6Transkodierung in adaptive Bitraten unter Berücksichtigung der UrsprungsqualitätX

Analyse der Ursprungsqualität und stufenweise Transkodierung in Profile mit geringerer Qualität (vgl. Bitrate) als das Original
7Messung der Ergebnisbitraten der jeweiligen Videoprofile für die m3u8-MetadateiX

Das HLS-Format und alle seine Profile müssen durch einen Pseudoclient gestreamt und statistisch gemessen werden
8Messung der Ergebnisauflösung der jeweiligen Videoprofile
X
Einige Player nutzen zusätzlich die Metainformation über die Auflösung der Profile
94K-Profil für WebTV
X
Die Originalauflösung des Videos wird bis zu 2160p transkodiert
10Einstellung des Allow-From-Headers des Medien-Webservers sowie Erstellung einer generischen crossdomain.xmlX

Flash- und HTML5-Player brauchen jeweils verschiedene Webservereinstellungen zum Abspielen des HLS-Streams in einem externen Player aus einer anderen Domain
11Konfiguration der Cache-eigenschaften des Webservers
X
Da der Server statischen Content liefert, empfiehlt sich eine lange Cachelebensdauer
12Verschlüsselung der HLS-Dateien mit AES-256 sowie ein tokenbasierter Abspielmechanismus
X
Abspielmechanismus für eine individuelle, konditionierte Freigabe des Keys in Folge einer Authorisierung des Users.
13Einbindung eines SessionID-Verfahrens zusätzlich zum AES-Protokoll

XDurch die Verwendung von SessionID‘s kann festgelegt werden, welcher Computer die freigegebene Mediendatei im Netz abrufen kann
14Laufender Betrieb des API-Servers mit SSLX

Der Webupload der Mediendateien sollte verschlüsselt stattfinden
15SSL-Option für Medienserver
X
Zusätzliche Sicherheit dank SSL-Verschlüsselung
16Aktueller Fortschritt des Transkodierungsprozesses

XFFmpeg stellt Statusinformationen über einen TCP-Server bereit
17Intel QuickSync Video -Integration

XFFmpeg-Bibliothek sowie Syntax des QSV-Transcoders
18Trennung von Medienserver-Logik und Transcoder-Logik
X
Der Medienserver funktioniert mit Mindesthardwareanforderungen ungestört vom Transcoder
19Skalierbarkeit des Transcoders

XTranscoder kann auf beliebig viele Maschinen skaliert werden
20Skalierbarkeit des httpd

XDer Medienspeicher kann mit Dateisystemwerkzeugen skaliert, kopiert und optimiert werden
21Skalierbarkeit der Bandbreite

XDie Bandbreite kann durch FTP-Mirrors und einen Geo-Proxy auf viele Server diffus skaliert werden
22Content Delivery Network-Nutzbarkeit und -Integration

XDurch die Verwendung des http/s- Protokolls kann jedes CDN direkt auf die Medien zugreifen
23Webcache-Nutzbarkeit

XWebcaches können HTTP-Pakete zwischenspeichern, je nach Cachekonfiguration des httpd
Tabelle 8: MUSS-SOLL-KANN Kriterien der REST API

  1. Der Multipart-Webupload ist die Kernfunktion der API und ermöglicht den effektiven Empfang von bis zu 2GB großen Mediendateien von verschiedenen Programmen, wie Webseiten, Mobile Apps, Shellprogramme wie cURL und lynx.
  2. Die cURL-Bibliothek ermöglicht serverseitig den Download einer vom User bzw. dem Frontend definierten URL. Dies vergrößert die effektive Maximalgröße der Mediendatei bis zu 10GB.
  3. Der aria2-client ermöglicht den Download aller gängigen Medien-URL‘s in der Konsole. Seine Integration erweitert die möglichen Medienquellen und vereinfacht den Download von sehr großen Dateien bzw. Dateimengen. Der bereits verwendete Jobserver kann den aria2-client nach dem Status abfragen und anschließend die Enkodierung in Gang setzen.
  4. Es fehlt im aktuellen Streaming-Universum an einem Open Source Skript, dass die Erstellung eines weboptimierten Streams mit adaptiven Bitraten unterstützt. Die verfügbaren, überwiegend kostenpflichtigen Videoupload-Skripte unterstützen entweder lediglich ein Profil bzw. werden als Software as a Service angeboten.
  5. Ein Videoupload selbst braucht wenige Schritte und kommt ohne Quelldateianalyse, bis auf die automatische Analyse von FFmpeg aus. Um jedoch bspw. zwischen Audio- und Videodatei zu unterscheiden, ist ein Einblick in die Attribute der Mediendatei notwendig.
  6. Der Einblick in die Audio-/Videoparameter gibt gleichzeitig Auskunft über die Qualität der Quelldatei. Dabei wurden als Qualitätsindikatoren die Bitrate bei Audiodateien und die Linienanzahl (360p, 480p, 576p, usw.) bei Videodateien gewählt. Gleichzeitig wurde die Qualitätsabstufung der Audio-/Videoprofile sehr fein gestaltet, damit das Ergebnisvideo möglichst originalgetreu bleibt und gleichzeitig fließend unter verschiedenen Bedingungen abgespielt werden kann.
  7. Damit die Abstufung in verschiedene Qualitätsprofile im HLS-Format vom Player erkannt werden kann, muss eine m3u8-Datei als Index der verschiedenen Profile erstellt werden. Die Metainformation über die Bitrate der jeweiligen Profile ist notwendig, damit der Player die verschiedenen Qualitätsstufen effektiv aufrufen kann.
  8. Eine zusätzliche Metainformation für einen HLS-Player ist die Auflösung eines jeweiligen Videoprofils, die je nach HLS-Implementation ebenfalls vom Player berücksichtigt wird, um kein Profil zu laden, das eine höhere Auflösung besitzt als das Playout-Fenster.
  9. Da die momentan handelsüblichen Rechner und Browser verbunden mit einer schnellen Internetverbindung bereits die technischen Empfangsbedingungen für 4K-Webvideo erfüllen, ist die Maximalauflösung des Transcoders auf 4K gesetzt.
  10. Für den Playout des HLS-Streams durch einen externen Player in einer anderen Webdomain als die Quelldomain des HLS-Streams, müssen bei einem Flash-Player die crossdomain.xml im Webroot vorhanden sein sowie bei HTML5-Playern der «Access-Control-Allow-Origin»-HTTP-Header auf «*» gesetzt sein.
  11. Damit der Medienserver effektiv Gebrauch von Webcaches sowie Browsercaches machen kann, muss er für die MPEG-Transport Stream-Dateien mit dem .ts-Suffix ein sehr hohes Verfallsdatum konfigurieren, was bei wiederholten Aufrufen desselben Streams den Traffic verhältnismässig entlasten und das Datenvolumen des Servers verringern kann.
  12. Der FFmpeg-Transcoder bietet eine eingebaute AES-256 Medienverschlüsselung mittels der openssl-Bibliothek. Bei AES über HTTP werden die verschlüsselten Dateien ebenfalls in Webcaches abgespeichert, was den Server bei wiederholtem Zugriff entlastet und gleichzeitig eine gewisse Sicherheit der Inhalte trotz der Zwischenspeicherung bietet.
  13. Das PHP-Skript master.m3u8, das interaktiv entscheidet, ob der Player die Keyinfo für die Inhalte erhält, kann gleichzeitig über eine SessionID forcieren, dass nur ein einziger Zuschauer gleichzeitig auf den Stream zugreift.
  14. Der API-Server sollte per default mit SSL betrieben werden, damit die Zeichenfolgen der Authorisierungstokens nicht im Internet als reiner Text verschickt werden.
  15. Für eine erhöhte Sicherheit der User kann der Medienserver ebenfalls über HTTPS betrieben werden. Zusammen mit AES-256, das zusätzlich die Inhalte selbst verschlüsselt, ist die Sicherheit höher als mit bloßer Medienverschlüsselung, zu Lasten der Performance.
  16. FFmpeg hält während seiner Arbeit eine aktuelle Statusinformation über einen TCP-Feed (-progress PORTNUMMER85) bereit. Diese Information kann vom master.m3u8-Skript gelesen und dem Enduser als Platzhalter serviert werden, solange die Transkodierung noch nicht abgeschlossen ist.
  17. Intel QuickSync Video86 (kurz: Intel QSV) ermöglicht die Ausnutzung des Haswell-Chipsets87 in moderneren i5- und i7-Prozessoren zum Enkodieren von H.264- sowie H.265-Videos. Dieses Verfahren entlastet die CPU-Kerne erheblich v.A. bei der Transkodierung von H.265- sowie 4K-Inhalten.
  18. Der Transcoder nimmt während seiner Arbeit alle Resourcen des Hosts in Anspruch. Deswegen ist es von Vorteil, die Medieninhalte auf einem gesonderten Webserver zur Verfügung zu stellen, da dieser sonst erhebliche Antwortzeiteinbußen durch einen zum Webserver parallel laufenden Transcodingsprozess erleiden würde.
  19. Durch die Verwendung des Gearman Jobservers und eines Network Area Storage kann die Rechenarbeit der Encodingprozesse – sollten es viele sein – gleichmäßig auf viele seperate Transcoder verteilt werden, da der Gearman Jobserver einen gemeinsamen Jobpool für verteilte Anwendungen unterstützt88 und alle Maschinen auf denselben Network Area Storage (NAS) Zugriff haben.
  20. Der Medienspeicher kann bei unverschlüsselten Inhalten lediglich durch einen entsprechend konfigurierten rsync-Aufruf repliziert werden. Bei verschlüsselten Inhalten muss zusätzlich die Token– sowie die Media-Tabelle der Datenbank kopiert werden, um auf die verschlüsselten Inhalte zugreifen zu können.
  21. Die Bandbreite kann durch die Skalierbarkeit sowohl der Encoder– als auch der Webserver-Komponente ebenfalls multipliziert werden. Entweder innerhalb desselben Netzwerkes durch Hinzufügen eines zusätzlichen Webservers oder durch die Spiegelung des Medienspeichers in ein anderes Netzwerk und die Verwendung eines Proxy bzw. Load Balancers.
  22. Content Delivery Networks können zusätzlich zu den eigenen Spiegelservern das Volumen balancieren und in entfernten Weltteilen eine schnelle Ladezeit ermöglichen. Es kann bei unverschlüsselten, statischen Inhalten eine reine HTTP Option bei den meisten Anbietern gebucht werden, wodurch die Kosten im Verhältnis zu anderen CDN Broadcast-Tarifen erheblich sinken.
  23. Bei korrekter Cachekonfiguration des Medienservers kann das Datenvolumen bei vielen wiederholten Aufrufen desselben Inhalts erheblich reduziert werden. Ein klassisches Beispiel ist ein Viralvideo, das unerklärlicherweise plötzlich Verbreitung von epidemischem Ausmaß findet. Durch eine korrekte Cachekonfiguration kann die effektive Zahl der Zuschauer von VoD-Inhalten erhöht werden und damit der Verschwendung von Ressourcen (Datenvolumen) vorgebeugt werden.

Die Anforderungsanalyse an eine Beispielapp wird im nächsten Unterkapitel kurz besprochen. Die einzelnen Punkte der Tabelle werden nach ihr einzeln erläutert.

5.3. MUSS-SOLL-KANN Analyse – Frontend / Player

Das Frontend kann durch REST-Methoden mit dem Encoder kommunizieren und hat Zugriff auf alle relevanten Funktionen. Die folgende Tabelle erläutert die Mindestanforderungen an die App (mobile und web), damit der Videoupload-Workflow genutzt werden kann.

Nr.WortlautMUSSSOLLKANNKommentar
1Zugriff auf HTTPS REST-EndpunkteX

Die Programmiersprache muss die Kommunikation über HTTPS mit REST-Endpunkten ermöglichen
2Eingebauter persistenter Speicher (Datenbank oder Dateisystem) für TokensX

Die Tokens für die Freigabe (Abspielen und Löschen) einzelner Medien-Assets müssen vom Webfrontend oder vom Webclient persistent gespeichert werden.
3Upload über HTTPS-Multipart UploadX

Der HTTPS-Upload ermöglicht das Einfügen eines Medien-Assets
4Anzeige der verfügbaren Medien-Assets (Liste mit Screenshot-Ikonen)X

Optimalerweise sollten die hochge-ladenen Medien-Assets nach dem Playlistprinzip angezeigt werden
5Abspielen eines Assets
X
Das Asset sollte direkt von der Playliste in den Playmodus schalten
6Teilen des Assets (URL) mit anderen (IM, Social Media)

XVon Vorteil ist eine minimale Social Media Funktionalität, wie Teilen und OpenGraph Metadaten
7Beschreibung hinzufügen, Querverweise zu Webseiten oder Social Media Accounts

XEinbindung von Querverweisen in die Beschreibung (bei Autoren, die eigene Musik veröffentlichen, etwa auf Verwertungsseiten, wie iTunes)
8Kommentare, Forum, Benutzerverwaltung, Chat usw.

XZusätzlich zu den reinen Playout-Funktionen kann eine ganze Community entstehen
Tabelle 9: MUSS-SOLL-KANN Kriterien eines Frontends für die REST API

  1. Der Zugriff auf REST API- Endpunkte ermöglicht den Austausch von Tokens. HTTPS verschlüsselt diese Zeichenfolgen im Internetverkehr.
  2. Das Frontend muss grundsätzlich über einen eigenen Speicher für die MEDIA.TOKENs verfügen. Ohne diese Tokens schlägt die Verifizierung fehl und das Medien-Asset kann weder gelöscht noch bei verschlüsselten Inhalten abgespielt werden.
  3. Der Multipart Upload ist die verhältnismäßig einfachste Weise, um eine Webupload-Funktionalität zu realisieren. Zusätzlich kann ein dedizierter (s)ftp-client mit einem Web- oder Mobile- Interface sicherere Uploads, das Fortsetzen von fehlgeschlagenen Uploads usw. ermöglichen.
  4. Durch den persistenten MEDIA.TOKEN-Speicher können Playlisten mit Vorschau direkt im Frontend generiert werden, indem die App die Mediendatenbank nach diesen Schlüsseln und den passenden Metadaten abfragt.
  5. Neben dem Abspielen von unverschlüsselten Medieninhalten durch ein einfaches Aufrufen der m3u8-Datei bzw. eines Webplayers, sollte das Frontend ebenfalls das Abrufen eines WATCH.TOKEN‘s sowie demnach das Abspielen von verschlüsselten Inhalten integrieren.
  6. Das OpenGraph Protokoll beschreibt einen Standard für die Metadaten eines Webinhalts. Neben der richtigen Indexierung in Suchmaschinen ist dieses Protokoll gleichzeitig für ein ästhetisches Einbinden in Social Media Seiten sowie in vielen Instant Messenger- Anwendungen verantwortlich, was bei Videoinhalten in Social Media relevant für die Zahl der Aufrufe ist.
  7. Neben Metadaten für externe Anwendungen kann die App eigene Metadaten für den Playout sowohl in Web als auch Mobile verwalten, damit neben dem Video zusätzliche menschlich lesbare Informationen, wie Querverweise auf Verwertungslinks bei Verlegern oder zusätzliche Quellen bei Reportagen, Dokumentationen usw. vorhanden sind.
  8. Abschließend kann die App serverseitig eine Community verwalten, etwa durch das Einbinden der REST API in ein existierendes Webframework oder eine Groupware.