StreamUp - Video-Chunks erzeugen


Vor einigen Tagen bin ich gefragt worden, wie man denn ein Testvideo bestehend aus einzelnen Video-Chunks für die Video-Live-Streaming-Anwendung StreamUp erstellt. Ich gebe daher an dieser Stelle eine kleine Mini-Anleitung, die beschreibt, wie man ohne größere Kenntnis von MPEG-Containern & Co. eine Reihe von Chunks erstellt. Zum leichteren Ausprobieren der Anwendung habe ich ergänzend dazu einen kleinen JavaFX-Testclient geschrieben, der die einzelnen Chunks an die Anwendung streamt. Das Ganze ist aber eher prototypisch zu sehen. So muss aktuell der Webclient, nachdem ein Video gestreamt wurde, neu gestartet werden, bevor ein neues gesendet werden kann. Beim Streamen von einer Handy-Kamera aus müssen zudem noch ein paar weitere Dinge beim erstellen der MPEG-DASH-Chunks beachtet werden.
Desweiteren bin ich gefragt worden, ob ich das Ganze nicht per GitHub zur Verfügung stellen könnte, evtl. auch um an der Weiterentwicklung mitzuarbeiten. Das habe ich natürlich gerne getan und die StreamUp-Anwendung und der neue Testclient stehen nun auf GitHub zur Verfügung.

Video-Chunks erstellen


Wenn irgendein beliebiges Video vorliegt, dann sollte es zunächst nach H.264/AVC encodiert werden. Dafür kann z.B. das Tool X264 verwendet werden. Das dann vorliegende h264 raw video wird danach in einen mp4-container verpackt und schließlich segmentiert. Diese beiden Schritte sind mit dem Tool MP4Box möglich.

Da das hier aber nur eine Mini-Anleitung sein soll, kürzen wir das Prozedere etwas ab;) Benötigt wird lediglich das Zaubertool Mp4Box. Das Video im richtigen Format holen wir uns über ein Onlinetool in Verbindung mit YouTube.
Als Video wählen wir hier als Beispiel das denkwürdige Intro zur Serie "Knight Rider" (https://www.youtube.com/watch?v=7AhqKBE8Mhs). Ein Mann, der mit seinem Computer und Auto gegen das Unrecht kämpft, scheint mir ein guter Einstieg zu sein;)

Als Onlinetool können wir ClipConverter nehmen. Bitte keine Beschwerden bzgl. aufgehender WerbePopUps.


In dem Onlinetool die YouTube-Video-URL eingeben, weiter klicken, als Konvertierungsformat MP4 (WICHTIG) wählen und Start drücken.
Der Download wird automatisch gestartet und wir bekommen das DASH-Video "Knight Rider Intro HD Season 4 german deutsch.mp4". Für die Segmentierung wird folgendes in die Kommandozeile eingegeben:

MP4Box -dash 20000 -frag 20000 -rap -segment-name seg "Knight Rider Intro HD Season 4 german deutsch.mp4"


Von den generierten Dateien sind folgende unsere chunks:

Dem Startfile seginit.mp4 habe ich im Bild bereits eine 0 verpasst, damit die Sortierung alphabetisch ist und das Testtool die Dateien direkt in der richtigen Reihenfolge einlesen kann. Die chunks dann noch in ein separates Verzeichnes kopieren und dann kann es losgehen.
Zunächst muss die Anwendung gestartet werden (http://localhost:8080/streamup/).

Testclient der StreamUp-Anwendung


Die zuvor erzeugten Video-Chunks können nun an die StreamUp-Anwendung gestreamt werden. Um das zu Testzwecken etwas zu erleichtern, habe ich einen JavaFX-Client erstellt.


Über den Button "Select" wird das Verzeichnis mit den Chunks ausgewählt. Wichtig ist, dass die Chunks dort alphabetisch in der richtigen Reihenfolge liegen. Ein Klick auf den "Send Stream"-Button startet den Stream. Die einzelnen Videochunks werden dabei nach und nach an den Webclient gesendet. Die StreamUp-Anwendung muss zuvor natürlich gestartet sein. Wenn ein neues Video gestreamt werden soll, ist aktuell ein Browser-Reload durchzuführen.

Und schon saust K.I.T.T. über unseren Bildschirm;)



Links

Tags: streamup, video, mpeg, dash
Guido Oelmann     Freitag, 2. September 2016 0    677
@
(Email Adresse wird nicht veröffentlicht)
(kein HTML erlaubt)
Bitte beantworten Sie die einfache mathematische Frage.
  


Keine Kommentare vorhanden.