ZDF neo Livestream - Trennung von Bild und Ton
-
In der Hoffnung, daß es jemandem hilft, der auf der Suche nach einer Übergangslösung hier landet, erzähle ich hier, wie ich mit Hilfe von “alternativen Tools” und der Allround-Utility ffmpeg eine Folge von “Notruf Hafenkante” zurechtgebastelt habe.
MV hat die Folge in der Filmliste, aber die URL bringt einen “404 - Not Found”. Die Sendung ist für morgen (30.1.) vorgesehen; normalerweise hat das ZDF diese Serien-Episoden schon mal eine Woche vorher in der Mediathek. DIe Idee ist wohl, daß der Junkie nach der Ausstrahlung von Folge X sich die Folge X+1 gleich anschließend online antun kann.
Normalerweise heißt ZDF und “404” ja nur, daß man den ZDF-Index hochzählt. Der steht in der Filmliste auf 2. Da aber 3,4,5 und 6 ebenfalls nicht aufzufinden waren, begab ich mich auf die Reise mit den “alternativen Tools.” Davon habe ich zwei im regelmäßigen Einsatz, die Browser-Erweiterung Download Helper auf Firefox und das Kommandozeilen-Programm YOutube-dl. Mit beiden habe ich schon schöne Erfolge erzielt.
Diesmal jedoch - und deshalb bin ich heute hier, weil es mit der oben erwähnten vermuteten Umstellung beim ZDF zun zu haben scheint - lief es alles ein wenig verquer: Download Helper fand nur briefmarkengroße Formate (z.B. 480x272) oder die 1280x720-Version mit Audiobeschreibung. Bevor ich das richtig durchschaut hatte, hatte ich die auch schon auf der Platte. Okay, der Youtube-Helfer ist normalerweise auch sehr clever. Doch bevor ich mich’s versah hatte ich da ebenfalls die “Bildbeschreibungsversion” geerntet. Aber als freundliche Zugabe fand sich auch die reine Tonspur ganz für sich alleine auf der Platte.
Wie MenchenSued oben schon beschrieb, kann ffmpeg solche Aufgaben durchaus:
ffmpeg -i [Video-URL] -i [Ton-URL] -c copy -bsf:a aac_adtstoasc [MyFilename.mp4]
Nur daß meine Video-Datei auch die bildbeschreibende Tonspur beinhaltete und ich so genau den auch in meiner Output-Datei wiederfand.
So habe ich ein wenig über die Stream-Auswahl bei ffmpeg recherchiert (ein schönes Wort für Googeln …) und ja, ohne besondere Aufträge nimmt ffmpeg von jeder Stream-Sorte (Video, Audio, Untertitel) erstmal den ersten, den es findet. Dabei macht es nichts, wenn die erste Datei nur einen Audio-Stream enthält; dann wird der Video-Stream eben erst in der zweiten Datei gefunden.
Also, mal völlig abgesehen davon, was der Experte aus diesem Wunder-Tool noch alles herausholen kann: Hier hilft die ganz einfache Lösung, die beiden Eingabe-Dateien zu vertauschen:
ffmpeg -i [Ton-URL] -i [Video-URL] -c copy -bsf:a aac_adtstoasc [filename.mp4]
wobei dann der Audio-Stream mit der Beschreibung ignoriert wird.
Das war’s was ich wollte. Hoffentlich hilft’s jemandem weiter.
(Es könnte gut sein, daß die ZDF-Mediathekler damit experimentieren, die Daten zu einer Sendung modular aufzubewahren - verschiedene Video-Versionen nach Auflösung und Audio mit und ohne Bildbeschreibung, eventuell noch 5.1 oder fremdsprachige Alternativen - in der Summe kann man da bei getrennter “Lagerhaltung” 'ne Menge Platz sparen. Und ausgespielt wird dann eben immer ein Paar von Streams, je nachdem, was der Kunde bestellt hat.)
-
@gerdd Die Mühe, die du dir gegeben hast, ist anerkennenswert, aber in diesem Fall (und mit der entsprechenden Anpassung auch in anderen) geht es einfacher, wenn du diese URL nimmst (r-klick und “speichern unter”): https://rodlzdf-a.akamaihd.net/none/zdf/20/01/200130_1925_sendung_nhk/3/200130_1925_sendung_nhk_a1a2_3328k_p36v14.mp4.
Mir würde helfen, wenn ich mich zum Aufzeichnen des ZDFNeo-Livestreams nicht mit ffmpeg und der Kommandozeile, für die ich zu doof bin, rumschlagen müsste. -
@gerdd sagte: Nur daß meine Video-Datei auch die bildbeschreibende Tonspur beinhaltete und ich so genau den auch in meiner Output-Datei wiederfand.
So habe ich ein wenig über die Stream-Auswahl bei ffmpeg recherchiert.Das hier vorliegende Problem ist ein anderes als deines. Und deines wird üblicherweise anders gelöst (und zwar mit der Stream-Auswahl via “map”-Option).
Und diese Option kann möglichweise auch für das Problem des OP verwendet werden (ich kenne die map-Option nur im Zusammenhang mit lokalen Files):
ffmpeg -i [URL_masterfile-aus-MV.m3u8] -c copy -bsf:a aac_adtstoasc -map 0:3 -map 0:0 [filename.mp4]
Die Nummerierung der Input-File(s) und der Video-/Tonspuren beginnt bei “0”: “0:3” bedeutet somit: vom 1. Input-File (= Masterfile) der 4. Stream (im Masterfile).
Oder vielleicht transparenter (v = Videospur; a = Audiospur):
-map 0:v:3 -map 0:a:0
Evtl. geht für die Video- und Tonspurselektion auch (m = Metadaten):
-map 0:m:CODECS="avc1.640020,mp4a.40.2" -map 0:m:name:"TV Ton"
-
@gerdd Zudem ist die Episode in der Filmliste vom 29.01. 22:17 mit korrektem deutschen Ton und ohne Bildbeschreibung drin.
-
@styroll Das liest sich sehr vielversprechend. Du bist also der Ansicht, dass das so für den Neo-Livestream funktionieren könnte? Käme diese Syntax denn so in die Kommandozeile? Meinst du das kriegt auch ein Dummy mit pröbeln hin, oder ist das zu kompliziert?
-
@sunrise sagte: Du bist also der Ansicht, dass das so für den Neo-Livestream funktionieren könnte?
Vom Prinzip her schon (hab wie gesagt nur Erfahrung damit im Zusammenhang mit lokalen Videodateien).
Der grosse Vorteil dieser Variante ist, dass man die (wechselnde) Video- und Tonspur-URL nicht zu wissen braucht, solange die Streamreihenfolge oder deren Bezeichnung gleich bleibt. Das heisst, man könnte ein eigenes Set erstellen (und dann dieses z.B. via Button oder Rechtsklick aufrufen) und zwar mit folgendem FFmpeg-Schalter (macOS, Linux):
-user_agent "Mozilla" -i %f -c copy -bsf:a aac_adtstoasc -map 0:v:3 -map 0:a:0 **
Vielleicht probiert das mal jemand im Forum, der nicht geogeblockt ist, mit dem ZDF.neo-Livestream aus. Allenfalls alle 3 Varianten testen.
-
@MenchenSued Ich habe heute morgen um 6 Uhr den ZDFNeo-Livestream aus dem cmd starten und das File aufnehmen können. Leider ist im mp4-Container der Ton zwar vorhanden, aber stark asynchron. Das liesse sich mit Avidemux zwar ausbügeln, ist aber bei einer grösseren Anzahl Files sehr zeitraubend.
Also habe ich mp4 durch m2ts ersetzt, analog VDH (HLS Stream als M2TS streamen). Resultat: Kein Ton mehr und im cmd wiederholt die Fehlermeldung: [mpegts @ 000001d9e39a7e40] AAC bitstream not in ADTS format and extradata missing. Gibt’s für diese Zwickmühle vielleicht eine Lösung? Vielen Dank im Voraus. -
@sunrise sagte: Also habe ich mp4 durch m2ts ersetzt […] Resultat: Kein Ton mehr und im cmd wiederholt die Fehlermeldung: [mpegts @ 000001d9e39a7e40] AAC bitstream not in ADTS format and extradata missing.
Das Audio-Bitstream-Format in Transport-Streams muss im ADTS-Format sein, d.h. für das Packen der Streams in TS-Containern ist keine Umwandlung nötig (d.h. “-bsf:a aac_adtstoasc” weglassen).
-
@styroll Danke, dass du so grosszügig dein Wissen teilst, das ist nicht selbstverständlich. Ich werde den Tipp gleich mal testen. Im Idealfall müsste das Resultat die perfekte synchrone Aufnahme sein.
-
@sunrise Ja ja, kommt Zeit, kommt Rat … aber: Danke!
-
@styroll Good news, bad news. Die Aufnahme als m2ts funktioniert mit dieser Syntax einwandfrei, aber der Ton ist LEIDER genauso verschoben wie bei mp4. Dank Avidemux - hoffe ich wenigstens, da ich dieses Feature noch nie benutzen musste - sollten sich Bild und Ton im verlustfreien copy-Verfahren relativ einfach synchronisieren lassen. Aber selbst wenn das so gelöst werden könnte, wäre eine synchrone Livestreamaufzeichnung eleganter. Ich habe die Hoffnung jedenfalls noch nicht aufgegeben, dass dies möglich sein könnte.
-
@sunrise
Ich habe heute zwei Aufzeichnungen vorgenommen und keinen Versatz festgestellt. Leider waren es Dokus mit dem Sprecher im Off. Mein Befehl war:ffmpeg -i https://zdf-hls-02.akamaized.net/hls/live/2002461/de/db2a160db8fa0578f9d55391f18d47c1/5/5.m3u8 -i https://zdf-hls-02.akamaized.net/hls/live/2002461/de/db2a160db8fa0578f9d55391f18d47c1/6/6.m3u8 -c copy -bsf:a aac_adtstoasc x1.mp4
-
@sunrise sagte: wäre eine synchrone Livestreamaufzeichnung eleganter
Versuch’s mal mit (weiss nicht, ob das bei Streams funktioniert):
-async 1
(Sync beim Start) oder:
-async 0
(Sync beim ersten Timestamp) oder:
-async 48000
(Sync beim jedem Timestamp; “44100”, falls die Audiospur eine Sample Rate von 44100 kHz aufweist) -
@sunrise sagte in ZDF neo Livestream - Trennung von Bild und Ton:
Leider ist im mp4-Container der Ton zwar vorhanden, aber stark asynchron.
Das habe ich bei Livestreams immer wieder. Ich habe noch kein System herausgefunden, wann es klappt und wann nicht. Ich hatte einmal die Vermutung, dass es Senderabhängig ist. Das hat sich nicht bestätigt.
@styroll hat damals die Vermutung …
Könnte möglicherweise auch auf eine unzuverlässige Verbindung zurückzuführen sein.
… geäußert.
Mittlerweile halte ich das auch für die wahrscheinlicheste Lösung.
Nachdem ich meine Livestreammitschnitte “automatisiert” laufen lasse, starte ich immer etwas mit Vor- und Nachspann, so dass ich Aufnahmen eh immer manuell nachbearbeite, da mach ich dann gleich den Tonversatz gleich mit. (eh auch mit avidemus)
Nichtsdestotrotz ists lästiger Mehraufwand, wenns also Lösungsvorschläge gibt, würd ich mich da gerne anhängen.
-
@DaDirnbocher sagte in ZDF neo Livestream - Trennung von Bild und Ton:
Ich hatte einmal die Vermutung, dass es Senderabhängig ist. Das hat sich nicht bestätigt.
Ich präzisiere. Wenn mein Rechner im Heimatland bleibt und ich heimische Livestreams mitschneide, hatte ich noch nie einen asynchronen Ton.
Erst wenn ich den Rechner über die Grenze schicke und Streams aus dem Ausland mitschneide, kann es zur Asynchronität kommen. Aber auch nicht immer.
-
@DaDirnbocher sagte in ZDF neo Livestream - Trennung von Bild und Ton:
starte ich immer etwas mit Vor- und Nachspann
Bei den ÖR ist das doch eh nötig. Insbesondere ARD und ZDF überziehen gern mal eine viertel oder halbe Stunde. Ich hatte früher ständig Versatz, seit vielen Wochen aber kein einziges Mal mehr. Vielleicht einfach Glück gehabt.
-
@MenchenSued Hab’s natürlich sofort in cmd mit diesem String “C:\Users\Username\Downloads\MediathekView13.5.1\bin\ffmpeg.exe” -i https://zdf-hls-02.akamaized.net/hls/live/2002461/de/db2a160db8fa0578f9d55391f18d47c1/5/5.m3u8 -i https://zdf-hls-02.akamaized.net/hls/live/2002461/de/db2a160db8fa0578f9d55391f18d47c1/6/6.m3u8 -c copy -bsf:a aac_adtstoasc x1 “D:\VIDEO\Mediatheken\Movies & Serials\Livestream-ZDF.neo Livestream-2121904285.mp4” getestet. Leider glücklos, sauber gestartet, dann leider mit folgender Fehlermeldung abortet:
[NULL @ 00000121acae7b40] Unable to find a suitable output format for ‘x1’
x1: Invalid argument -
@sunrise sagte: Unable to find a suitable output format for ‘x1’
Das mit der Kommandozeile hast du noch nicht wirklich verstanden. “x1.mp4” war ja bloss der Name der Output-Datei; und du hast ja einen anderen Namen und Pfad gewählt.
Lass also das “x1” einfach weg – wobei ich jetzt eh nicht weiss, was das soll, denn an den Optionen beim Kommandozeilenaufruf hat sich nichts geändert.…
Wieso sollte dann das AV-Sync-Problem weg sein? -
@styroll Einerseits hast du voll recht, mit der Kommandozeile bin ich leider noch nicht so richtig vertraut. Selbst schuld, da ich mich stets darum gedrückt und immer entweder die GUI-Alternative gewählt, oder die Finger davon gelassen habe (Schwellenangst halt). In diesem Fall habe ich aber echt gedacht das x1 sei ein ffmpeg Befehl. Dass ein Kommentar im off nicht mit den Bildern synchron ist, scheint mir logisch.
-
@sunrise sagte in ZDF neo Livestream - Trennung von Bild und Ton:
das x1 sei ein ffmpeg Befehl
mea culpa. Ich bin zu faul zum Schreiben und nenne temporäre Dateien so, damit ich sie schnell wieder löschen kann.
Du könntest mal den Befehl mit async ausprobieren, wenn Du den aufgezeichneten Stream mit dem Versatz noch hast.
Müsste wie folgt lauten:ffmpeg -i [Input.mp4] -c copy -async 1 [output.mp4]
Dateinamen input.mp4 und output.mp4 bitte anpassen.