Archiv/Howto/Streaming-Inhalte herunterladen

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Achtung!

Die Verwendung dieses Howto geschieht auf eigene Gefahr. Bei Problemen mit der Anleitung melde dies bitte in der dazugehörigen Diskussion und wende dich zusätzlich an den Verfasser des Howtos.

Hinweis:

Diese Howto-Anleitung wurde zuletzt von linux_joy am 31.05.2017 unter Ubuntu 14.04 erfolgreich getestet.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Installation von Programmen

  2. ⚓︎ Bearbeiten von Paketquellen

  3. ⚓︎ Ein Terminal öffnen

Inhaltsverzeichnis
  1. Programme installieren
  2. Live-Streams sowie Video- oder Audio-Strea...
    1. HLS (HTTP Live Stream) aufnehmen
    2. HDS (HTTP Dynamic Stream) aufnehmen
    3. RTMP-Streams aufnehmen
    4. MMS-Streams aufnehmen
    5. RTSP-Streams aufnehmen
      1. FFmpeg
      2. MPlayer
  3. Stream-Download und ggf. Umwandlung mit VL...
    1. GUI
      1. Live-Streams
      2. On-Demand-Streams
    2. Terminal
  4. Informationen zu den heruntergeladenen Str...
  5. Programmkennung ändern
  6. Links
    1. Intern
    2. Extern

Hat man die Adresse herausgefunden – etwa durch den Artikel Archiv/Howto/Stream-Adressen ermitteln – dann sollte das Herunterladen funktionieren. Bei normalen HTTP-Adressen kann man eine Datei mit einem Download-Manager ebenso herunterladen wie mittels VLC. Man kann auch eine "Download-Erweiterung" für den Browser nutzen (z.B. Video DownloadHelper 🇬🇧 🇩🇪 für Firefox oder FVD 🇬🇧 für Opera).

Anders läuft es jedoch beim HTTP-Streaming.

Dateien mit einer Streaming-URL mit entweder dem Anfang mms:// oder rtsp:// lassen sich in vielen Fällen mit dem MPlayer herunterladen. Das gleiche gilt auch für URLs mit der Endung .asx.

Bei Dateien aus einer Streaming-URL mit dem Anfang rtmp:// kommen die beiden Programmen flvstreamer und rtmpdump in Betracht. Sie haben nahezu die identische Befehls-Syntax, ersteres ist aber weniger leistungsfähig. Diese können über die offiziellen Paketquellen installiert werden, was im nachfolgenden Abschnitt beschrieben wird.

Allgemein gilt: Falls der Stream nicht nur bloß heruntergeladen und in eine Datei kopiert, sondern auch noch zusätzlich transkodiert wird, so dauert der Vorgang mitunter um einiges länger.

Programme installieren

Für flvstreamer 🇬🇧 muss das folgende Paket installiert werden:[1]

Befehl zum Installieren der Pakete:

sudo apt-get install flvstreamer 

Oder mit apturl installieren, Link: apt://flvstreamer

Für rtmpdump 🇬🇧 muss das folgende Paket installiert werden:[1]

Befehl zum Installieren der Pakete:

sudo apt-get install rtmpdump 

Oder mit apturl installieren, Link: apt://rtmpdump

In diesem Paket befindet sich auch das Programm rtmpgw, welches ein HTTP-RTMP Stream Gateway ist. Näheres im Artikel Internet-TV/Stationen.

Für die Benutzung von rtmpdump siehe den Wikipedia-Artikel.

Alle Optionen findet man in den Manpages von flvstreamer bzw. rtmpdump.

Live-Streams sowie Video- oder Audio-Streams aufnehmen

HLS (HTTP Live Stream) aufnehmen

Ein HLS kann mit ffmpeg (aus dem FFmpeg-Projekt) bzw. Archiv/avconv (aus dem Archiv/Libav-Projekt) aufgenommen werden. Dabei werden Video-, Audio- und Untertitelstreams in eine Containerdatei kopiert (also ohne sie zu re-encodieren). Der Befehl[3] dafür lautet allgemein:

ffmpeg -i http://Adresse.m3u8 -c copy /Pfad/zur/Zieldatei.mkv 

Man kann die Aufnahme mit der Tastenkombination Strg + C stoppen. Bei On-Demand-Streams geschieht dies am Ende automatisch.

Alternativ kann man auch die URL in Anführungszeichen setzen, und/oder die CODEC-Angabe sowie ggf. auch das Ausgabeformat modifizieren:

ffmpeg -i "http://Adresse.m3u8" -codec: copy /Pfad/zur/Zieldatei.mp4 

In beiden vorherigen Beispielen werden dabei Streams mit nicht-unterstützten Codecs von ffmpeg einfach kommentarlos links liegen gelassen. Außerdem wählt ffmpeg die seiner Ansicht nach besten Streams aus der m3u8-Wiedergabeliste aus (siehe dazu auch Stream selection 🇬🇧 in der FFmpeg-Dokumentation). Diese müssen aber nicht zwangsläufig auch die tatsächlich hochwertigsten sein!

Im folgenden Beispiel werden deshalb alle vorhandenen Streams mit von FFmpeg unterstützten Codecs im Programm mit der anzugebenen Programm-Nummer (welche man vllt. über den Abschnitt Informationen zu den ermittelten Stream-Adressen anzeigen bekommen hat) in die Zieldatei kopiert. Außerdem wird lediglich ein Teil des gesamten Streams kopiert, und die üblichen Informationen über FFmpeg selbst werden unterdrückt:

ffmpeg -hide_banner -re -ss 01:05:02 -t 230 -i http://Adresse.m3u8 -map p:5 -codec: copy /Pfad/zur/Zieldatei.mp4 

Das folgende Beispiel ist aus verschiedenen Gründen exakt so angelegt:

ffmpeg -headers $'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"\r\n' -i http://Adresse.m3u8 -map 0:p:4 -map -0:14 -codec: copy -b:v 50k -b:a 50k -bsf:a aac_adtstoasc /Pfad/zur/Zieldatei.mp4 

HDS (HTTP Dynamic Stream) aufnehmen

Mithilfe des in PHP geschriebenen Skriptes AdobeHDS.php 🇬🇧 von K-S-V's GitHub-Seite 🇬🇧 können Multimedia-Streams im Format HDS (Adobe HTTP Dynamic Streaming) entweder aufgenommen oder – via Pipe-Operator – an einen Mediaplayer weitergeleitet werden.

Dabei werden zunächst die einzelnen Fragment-Dateien heruntergeladen, in eine flv-Containerdatei kopiert (also ohne sie zu re-encodieren) und dabei nahtlos zusammengefügt. Anschließend werden die heruntergeladenen Fragmente gelöscht.

Von dem Skript werden sowohl On-Demand-Streams als auch Live-Streams verarbeitet.

Die Benutzung des Skriptes erfolgt über die Kommandozeile.

RTMP-Streams aufnehmen

Zum Speichern von rtmp://-Streams siehe auch z.B. den externen Abschnitt Streaming-Videos des BR.

MMS-Streams aufnehmen

mms://-Streams lassen sich sehr einfach mit MPlayer über ein Terminal[3] aufnehmen.

mplayer -dumpstream mms://example.com/Globalplayers/GP_14.wmv -dumpfile ./download/test.wmv 

Die Adresse des Streams mms://example.com/Globalplayers/GP_14.wmv ist frei erfunden und nur ein Beispiel. Diese .wmv-Datei würde nun als test.wmv im Verzeichnis /download innerhalb des Home-Verzeichnisses des aktuell angemeldeten Benutzers gespeichert.

mplayer -playlist Streaming-Adresse.asx -dumpstream -dumpfile Dateipfad.wmv 

Man kann die Aufnahme mit der Tastenkombination Strg + C stoppen. Bei On-Demand-Streams geschieht dies am Ende automatisch.

Manchmal erhält man während der Speicherung die Meldung:

Stream not seekable!

Dies bedeutet jedoch nicht, dass das Herunterladen nicht funktioniert. Je nach Größe der Datei dauert es eine Weile bis sich wieder etwas tut. Ist das gesamte Video gespeichert, dann erhält man die Meldung:

Everything done. Thank you for downloading a media file containing proprietary and patented technology.
Core dumped ;)

Exiting... (End of file)

Zum Speichern von mms://-Streams können auch die Kommandozeilen-Programme Archiv/mimms und mmsrip genutzt werden.

RTSP-Streams aufnehmen

FFmpeg

rtsp://-Streams lassen sich sehr einfach mit FFmpeg bzw. avconv (aus dem Libav-Projekt) über ein Terminal[3] aufnehmen. Dabei werden Audio- und Videostreams in eine Containerdatei kopiert (also ohne sie zu re-encodieren). Der Befehl[3] dafür lautet allgemein:

ffmpeg -i rtsp://Adresse -acodec copy -vcodec copy /Pfad/zur/Zieldatei.mp4 

Man kann die Aufnahme mit der Tastenkombination Strg + C stoppen. Bei On-Demand-Streams geschieht dies am Ende automatisch.

Siehe auch den Abschnitt HLS (HTTP Live Stream) aufnehmen sowie den hierfür als Quelle verwendeten Link How to dump raw RTSP stream to file? 🇬🇧.

MPlayer

rtsp://-Streams lassen sich ebenfalls sehr einfach mit MPlayer über ein Terminal[3] aufnehmen. Das Verfahren funktioniert im Prinzip genauso wie bei MMS-Streams aufnehmen, jedoch muss man allgemein natürlich mms:// durch rtsp:// ersetzen und:

  • bei direkten rtsp://-Streams .wmv durch .rm bzw. .mp4, sowie

  • bei indirekten rtsp://-Streams .asx durch .mov

Man kann die Aufnahme mit der Tastenkombination Strg + C stoppen. Bei On-Demand-Streams geschieht dies am Ende automatisch.

Stream-Download und ggf. Umwandlung mit VLC

Mit VLC kann man einen Stream speichern und ggf. gleichzeitig in ein anderes Video- bzw. Audioformat umwandeln.

GUI

Live-Streams

VLC bietet die Möglichkeit, Radio- und Fernsehstreams abzuspielen. Dazu die Internet-Adresse des Radiostreams in die Zwischenablage kopieren und in "Medien → Netzwerkstream öffnen → Netzwerk" ( Strg + N ) im Feld "Adresse" einfügen. Anschließend muss man die "Wiedergabe-Taste" drücken, die sich unten befindet. Alternativ kann die Funktion "URL aus Zwischenablage öffnen" ( Strg + V ) verwendet werden.

Stream-Aufnahmen und "Time-Shift"

Auch das Aufnehmen von Streams und "Time-Shift" sind problemlos möglich. Dazu im Hauptfenster im Reiter "Ansicht → Erweiterte Steuerung" aktivieren. Es erscheinen weitere Bedienelemente, u.a. ein roter Aufnahme-Knopf. Aufnahmen werden mit dem Präfix vlc-record- sowie unter Angabe der Zeit und der Stream-Adresse im Homeverzeichnis (~/Downloads/) des Benutzers in streamart-spezifischen Datei-Typen (z.B. .mp4 oder .ts) abgelegt. Ein benutzerdefinierter Ort lässt sich über "Werkzeuge → Einstellungen → Input/Codecs" unter "Files → Aufnahme-Verzeichnis oder Dateiname" festlegen. Manchmal ist Letzteres sogar ein Muss weil kein Aufnahme-Verzeichnis voreingestellt ist und somit auch nichts aufgenommen wird!

Wenn man bei laufender Sendung den Pause-Knopf betätigt, wird die Wiedergabe unterbrochen. Ein erneutes Drücken lässt den Stream an der angehaltenen Stelle weiterlaufen. Nach Beenden des Players werden auch die während des Pausierens angelegten temporären Dateien gelöscht. "Time-Shift" ist auch in Verbindung mit der Aufnahme-Funktion möglich.

On-Demand-Streams

Über "Medien → Konvertieren/Speichern" kommt man zum Reiter "Netzwerk", wo man die Stream-Adresse einträgt. Nach dem Klick auf "Konvertieren / Speichern" öffnet sich ein Fenster, in dem man zum einen den Speicherort bestimmen und zum anderen auswählen kann, ob man bloß den "Raw-Input speichern" oder zusätzlich auch noch "Konvertieren" möchte. Bei der letzteren Möglichkeit kann man das gewünschte Video- bzw. Audioformat bestimmen.

Terminal

Streams lassen sich mit dem VLC-Player auch über ein Terminal[3] aufnehmen und ggf. gleichzeitig in ein anderes Video- bzw. Audioformat umwandeln. Es gibt verschiedene Syntax-Möglichkeiten:

vlc URL-DES-STREAMS --sout=Videos/Datei.mp4 

vlc -v URL-DES-STREAMS --sout=file/mp4:Videos/Datei.mp4 

vlc -v URL-DES-STREAMS --sout="#std{access=file,mux=mp4,dst=Videos/Datei.mp4}" 

Bei den vorangegangenen Befehlen wurde der Stream immer auch transkodiert, selbst wenn er schon im gewünschten Format vorlag. Möchte man dies unterbinden, so bietet sich dazu der folgende Befehl an:

vlc -v URL-DES-STREAMS --sout="#file{dst=Videos/Datei.mp4} sout-keep" 

Hinweis:

  • Bei vlc sollte man tunlichst im VLC-Fenster die Steuerungs-Option "Liste bzw. Einzelstück wiederholen" deaktivieren weil ansonsten der Stream nach kurzer Pause erneut heruntergeladen wird, wobei die bereits vorhandene Datei ohne Rückfrage überschrieben wird! Daran ändert auch nichts die optionale --play-and-exit-Option. Abhilfe schafft aber zuverlässig das Options-Doppel --no-repeat --no-loop.

  • Um eventuell noch an zusätzliche Terminal-Optionen zu kommen – besonders wenn man auch transkodieren will – bietet sich die Hilfe der GUI an. Hier bei superuser.com 🇬🇧 existiert eine sehr gute Anleitung dafür.

Informationen zu den heruntergeladenen Streaming-Dateien anzeigen

Möchte man lediglich den Dateitypen von Streaming-Dateien anzeigen, so eignet sich dafür das Programm file. Um neben den traditionellen menschenlesbaren Zeichenketten auch noch den MIME-Typ zu bekommen, muss man die beiden folgenden Kommandozeilen-Befehle separat verwenden:

file -k /Pfad/zur/Zieldatei 

wobei das -k für "keep-going" (weitersuchen nach dem ersten Treffer) steht, sowie

file -k --mime /Pfad/zur/Zieldatei 

wobei das -k für "keep-going" (weitersuchen nach dem ersten Treffer) und das --mime für "Ausgabe des MIME-Types" steht.

Um die technischen und Metadaten von Video- und Audiodateien anzeigen zu können gibt es die Programme MediaInfo, ffprobe (aus dem FFmpeg-Projekt) sowie Archiv/avprobe (aus dem Libav-Projekt). Sie erkennen zahlreiche Audio-, Video- und Container-Formate. Die Programme stehen als kommandozeilen-basierte Anwendungen zur Verfügung, MediaInfo optional auch mit einer GTK-basierten grafischen Benutzeroberfläche (GUI).

Programmkennung ändern

In einem Terminal[3] gelten die folgenden Befehls-Muster:

wget:

wget -U "MSDL (compatible; LG NetCast.TV-2011) HbbTV/1.1.1 (; LGE; GLOBAL_PLAT3; 1.0; 1.0;)" http://example.com/folder/file 

FFmpeg bzw. avconv:

ffmpeg -headers $'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"\r\n' -i http://Adresse.m3u8 -codec: copy /Pfad/zur/Zieldatei.mp4 

Wobei das \r\n den Zeilenvorschub (auch CRLF genannt) darstellt. Ohne diesen würde der Befehl folgendermaßen lauten:

ffmpeg -headers 'User-Agent: "FMLE/3.0 (compatible; FMSc/1.0)"' -i http://Adresse.m3u8 -codec: copy /Pfad/zur/Zieldatei.mp4 

Siehe auch den Programmkennung ändern.

Intern

Extern