MP4 statt HLS beim MDR (leicht OT, da Radio Mediathek)
-
Hallo allerseits, leicht off topic, da es ums Radio geht, ich wüßte jetzt aber auch nicht, wo ich es sonst fragen könnte. Der MDR scheint einige Radiobeiträge von MP4 Direktlinks auf HLS umgestellt zu haben. Aufgefallen ist es mir hier:
https://www.mdr.de/mediathek/audio-706284_zc-89922dc9_zs-df360c07.html
Bis letzte Woche waren die Sendungen noch per MP4 Direktlink abspielbar, jetzt nur noch per HLS. Nun erinnere ich mich, daß dies bei den Fernsehbeiträgen in der WDR Mediathek auch so ist, aber man aus der .m3u8 für den HLS Stream den MP4 Direktlink irgendwie herleiten kann.
Frage: Weiß einer ob und wie das beim MDR ist? Klar kann ich mir mit einschlägigen Tools (VDH + CoApp zum Beispiel) oder ffmpeg.exe mehr schlecht als recht helfen, aber bedeutend lieber wäre es mir, wenn ich irgendwie einen MP4 Direktlink herleiten könnte.
-
@salt sagte: Klar kann ich mir mit einschlägigen Tools (VDH + CoApp zum Beispiel) oder ffmpeg.exe mehr schlecht als recht helfen, aber bedeutend lieber wäre es mir, wenn ich irgendwie einen MP4 Direktlink herleiten könnte.
Zuerst die m3u8-URL zu ermitteln und daraus ein Direkt-DL-Link zu basteln, scheint mir aber eher aufwändiger zu sein, als einfach mit der URL der Webseite mit JD2 (JDownloader 2) ein MP3-File zu ziehen…
Ansonsten mit FFmpeg (hier für macOS / Linux):
/usr/local/bin/ffmpeg -i https://mdronline-vh.akamaihd.net/i/mp4audiomobil/DIGAScb4120b0-3e3b-4a91-8056-0cdc2e7edac2.smil/index_262100_a.m3u8 -c copy -bsf:a aac_adtstoasc /Users/user/Desktop/Hitabend.m4a
Für Windows einfach den Pfad für FFmpeg (…/MediathekView/bin/ffmpeg.exe) und den Zielpfad anpassen.
-
Erstmal Danke! Vorweg: Es funktioniert, ABER ich hätte da noch einige Fragen bzw. Beobachtungen. Der Weg über VDH + CoApp ist für mich nur der aller letzte Notnagel, da es ein RAM Fresser ist, der gerne mal wegen Speichermangels abstürzt (trotz 8 GB RAM). Bliebe ffmpeg.exe als Mittel der Wahl, sofern es keine MP4 Direktlinks gibt. Ich habe mir am Samstag auf die Schnelle mit MV geholfen (eine WDR HLS Sendung rausgesucht, diese in die MV D/L queue gepackt und vor dem Download die URL der .m3u8 gegen die vom Hitabend getauscht). Hat funktioniert. Ist aber nicht so elegant wie dein Weg.
Nun wollte ich es so wie von dir beschrieben machen, habe mir aber vorweg die neuste FFmpeg Version heruntergeladen (ffmpeg-4.0-win64-static.zip), entpackt und per cmd alles wie beschrieben gemacht und nach einer gewissen Wartezeit nur folgende Fehlermeldung ausgegeben bekommen:
Error in the pull function.
https://mdronline-vh.akamaihd.net/i/mp4audiomobil/DIGAScb4120b0-3e3b-4a91-8056-0cdc2e7edac2.smil/index_262100_a.m3u8: I/O errorZweiter Versuch mit der ffmpeg.exe von MV: Funktioniert, der D/L dauert aber rund eine halbe Stunde. Dritter Versuch mit der letzten 3er Version (ffmpeg-3.4.2-win64-static.zip): Funktioniert ebenfalls, der D/L geht aber viel schneller (knapp 5 Minuten).
Was hat sich denn von der 3.4.2 auf die 4.0 verändert, daß die eine geht und die andere nicht?
Was mich zudem verwirrt sind die unterschiedlichen Dateigrößen (alles die “echten” Dateigrößen und nicht die “Größe auf Datenträger”).
Ganz sonderbar ist das Ergebnis von VDH + CoApp:
422.258.987 Bytes
Der Versuch über die MV GUI wie oben beschrieben:
408.444.839 Bytes
Der D/L per cmd mit der mit MV mitgelieferten FFmpeg Version:
408.440.747 Bytes
Dasselbe (alles identisch gemacht) aber mit der Dateiendung .mp4 statt .m4a:
408.440.751 Bytes
Der D/L mit ffmpeg-3.4.2-win64-static.zip und .mp4 Dateiendung:
408.440.805 Bytes
Eigentlich hätte ich erwartet, daß die Dateigröße jedes mal exakt identisch wäre?!
Und noch eine Frage zu .mp4 versus .m4a. Die Direktlinks waren immer MP4 Dateien. Nun steht in der master.m3u8…
https://mdronline-vh.akamaihd.net/i/mp4audiomobil/DIGAScb4120b0-3e3b-4a91-8056-0cdc2e7edac2.smil/master.m3u8
…folgendes:
CODECS=“mp4a.40.2”
Die Wikipedia schreibt zudem:
“Die einzige im Standard spezifizierte Dateiendung ist .mp4”
Die .m4a ist ja quasi eine Apple Erfindung um zu signalisieren, daß in der MP4 nur ein Audio- und kein Videostream enthalten ist. Die in der master.m3u8 genannte “mp4a” kenne ich gar nicht als Dateiendung. Kann man also bei deiner Syntax einfach das .m4a durch .mp4 ersetzen oder muß noch etwas anderes verändert werden? Ich frage deshalb, weil ja die Dateigröße sich bei identischem Vorgehen und identischer FFmpeg Version nach dem D/L um vier Byte unterscheidet.
Und noch eine letzte Verständnisfrage: Hat FFmpeg bei der von dir angegebenen Syntax jetzt die TS Segmente runtergeladen und unverändert zusammengefügt oder wurde da noch etwas konvertiert? Ich möchte da nämlich keinen zusätzlichen Qualitätsverlust mit reinbringen.
-
@salt sagte: I/O error […] Was hat sich denn von der 3.4.2 auf die 4.0 verändert, daß die eine geht und die andere nicht?
Ich verwende noch die 3er-Version, scheint mir aber bei dir eher ein grundsätzliches Problem mit dem Programmpaket zu sein.
@salt sagte: Ganz sonderbar ist das Ergebnis von VDH + CoApp:
422.258.987 Bytes
Da ist immer noch etwas Overhead dabei (deshalb grössere Datei), wenn nicht alles entfernt wird, was es nur für das Streaming braucht. Die Companion App basiert übrigens auch auf FFmpeg, da hat man aber nicht die gleiche Kontrolle über die Einstellungen, zum Beispiel müsste man auch das Bitstreamformat ändern.
@salt sagte: Eigentlich hätte ich erwartet, daß die Dateigröße jedes mal exakt identisch wäre?!
Bis auf die Variante mit VDH sind sie ja bei den anderen Varianten fast identisch. Je nach FFmepg-Version bzw. Containerformat werden evtl. zusätzliche Metadaten geschrieben bzw. übernommen.
@salt sagte: Kann man also bei deiner Syntax einfach das .m4a durch .mp4 ersetzen oder muß noch etwas anderes verändert werden?
Ersetzen ist okay, weil beide Dateiendungen hier den identischen Container erzeugen (wie du selbst recherchiert hast).
@salt sagte:Die in der master.m3u8 genannte “mp4a” kenne ich gar nicht als Dateiendung.
Das ist auch keine, sondern ist ein Beschreibung für den enthaltenen Audiostream, nämlich MPEG-4-Audio (üblicherweise AAC codiert).
@salt sagte: Hat FFmpeg bei der von dir angegebenen Syntax jetzt die TS Segmente runtergeladen und unverändert zusammengefügt oder wurde da noch etwas konvertiert?
Durch den Befehl “-c:copy” (codec: copy) gibt es keine Konvertierung. Es wird hier bloss eine AAC-Tonspur aus einem TS-Container in einen MP4-Container (M4A) gepackt.
Ansonsten wird mit der Angabe einer Dateiendung eine Konvertierung bzw. Recodierung der Audio-/Videospuren mit Defaulteinstellungen ausgelöst. -
Super, vielen Dank für die ausführlichen Antworten, die helfen mir schon sehr weiter. Ich glaube es lohnt sich, wenn ich mich etwas mehr in FFmpeg einarbeite, scheint mir doch sehr nützlich zu sein, wenn man damit umgehen kann. Kennst du neben der offiziellen Dokumentation noch eine andere gute Anleitung?
https://ffmpeg.org/ffmpeg.html
-
@salt sagte: Kennst du neben der offiziellen Dokumentation noch eine andere gute Anleitung?
Ich bin erstere auch mal durchgegangen, ansonsten bringt meistens eine Google-Search die gewünschte Antwort auf ein konkretes Problem.
Für Windows gibt’s übrigens WinFF (ein simples GUI zu FFmpeg), bei welchem man auch häufige Befehle als Vorlage abspeichern kann.
Für macOS-User gibt’s ffWorks, bei welchem man aufgrund der Möglichkeiten des GUIs gar keine Kommandozeilenbefehle mehr braucht, aber sehr wohl die entsprechenden Kommandozeilenbefehle sehen kann.
-
@salt
Hier findest du auch viele nützliche Links http://trac.ffmpeg.org/wiki
Ist aber auf der Documentation Seite auch verlinkt. -
Danke nochmals für die Links und Hilfe, ich komme jetzt erst dazu mich wieder mit zu beschäftigen. Der heutige HLS D/L mit FFmpeg hat übrigens reibungslos funktioniert.