Livestreamer
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.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Livestreamer 🇬🇧 ist ein von Christopher Rosell entwickeltes Kommandozeilen-Programm in Python, mit dessen Hilfe Multimedia-Streams in diversen Protokoll- und Wiedergabelisten-Formaten entweder aufgenommen oder – via Pipe-Operator – an einen Mediaplayer der Wahl (z.B. VLC) weitergeleitet werden können. Der Hauptzweck von Livestreamer besteht laut dem Entwickler darin, dem Nutzer fehlerbehaftete und CPU-belastende Flash-Webbrowser-Plugin zu ersparen und dabei trotzdem in der Lage zu sein, sich vielfältig gestreamter Inhalte zu erfreuen.
Der Hauptschwerpunkt von Livestreamer liegt auf Live-Streams, weshalb Video-on-Demand nur begrenzt unterstützt wird.
Livestreamer kann entweder mithilfe seiner Plugins – Webseiten-URL-Eingabe mit oder ohne Protokoll-Präfix bei HTTP-URLs – oder aber ohne Plugins – Streaming-URLs mit Protokoll- bzw. HTTP-Streaming-Protokoll-Präfixen wie hls://
oder hds://
– aufgerufen werden. Plugins existieren u.a. sowohl für die großen Streaming-Plattformen als auch für diverse Mediatheken wie z.B.:
Dailymotion 🇩🇪 / 🇬🇧
Livestream 🇬🇧
Twitch 🇬🇧
UStream 🇬🇧
Eine vollständige Übersicht der z.Z. unterstützten Plugins findet man auf der Plugin-Seite 🇬🇧.
Für Entwickler, die auf die Video-Stream-Daten zugreifen wollen, existiert außerdem eine Programmierschnittstelle.
Alternative Programme sind in den Artikeln Streaming und Streams speichern zu finden.
Hinweis:
Livestreamer wird inzwischen nicht mehr aktiv weiterentwickelt. Da sich die APIs der Streaminanbieter regelmäßig verändern, ist es nur eine Frage der Zeit bis einzelne oder irgendwann alle Dienste über diese Anwendung nicht mehr angesprochen werden können. Ein aktiv entwickelter Fork von Livestreamer ist Streamlink 🇬🇧, das nicht in den offiziellen Paketquellen ist, aber ebenfalls über pip installiert werden kann.
Installation¶
Voraussetzungen¶
Um Streams aus einer Streaming-URL mit dem Anfang rtmp://
abspielen zu können muss RTMPDump 🇬🇧 über das folgende Paket installiert werden: [1]
rtmpdump (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install rtmpdump
Oder mit apturl installieren, Link: apt://rtmpdump
Möchte man nicht-mobile Streams mit dem Plugin UStream 🇬🇧 abspielen, muss das folgende Paket installiert werden: [1]
python-librtmp (universe)
Befehl zum Installieren der Pakete:
sudo apt-get install python-librtmp
Oder mit apturl installieren, Link: apt://python-librtmp
Seit Ubunbtu 16.04 wird stattdessen das Paket python3-librtmp benötigt.
Programm installieren¶
Livestreamer ist erst seit Ubuntu 15.10 in den offiziellen Paketquellen enthalten (Name des Pakets: livestreamer) und muss deshalb unter Ubunbtu 14.04 via pip installiert werden. Der Name des zu installierenden Python-Moduls lautet ebenfalls: livestreamer
[4].
Hinweis!
Fremdsoftware kann das System gefährden.
Benutzung¶
Die Benutzung des Programmes erfolgt über die Kommandozeile. Die allgemeine Syntax des Befehls im Terminal [2] lautet:
livestreamer [OPTION(EN)] "URL" [STREAM] (-o ZIELDATEI__oder__PFAD/ZUR/ZIELDATEI)
Die Platzhalter bedeuten im Einzelnen:
[OPTION(EN)]
– Diese sind ebenfalls optional und werden im Abschnitt Optionen erklärt."URL"
– Die Internet-Adresse (URL), von der gelesen werden soll. Sicherheitshalber in Anführungsstrichen.Bei durch Plugins 🇬🇧 unterstützte Webseiten sind dies die Streaming-Webseiten-URLs, wobei sie bei HTTP-URLs mit oder ohne Protokoll-Präfix sein können.
Bei nicht durch Plugins unterstützten Webseiten sind dies die Streaming-URLs, welche man z.B. durch die Netzwerkanalyse 🇩🇪 des Firefox herausbekommen kann. Außerdem wird dazu im Abschnitt Interne Links auf ein Howto mit einer Lösung für die Kommandozeile verwiesen.
[STREAM]
– Optional; entwederbest
für die beste Stream-Qualität oderworst
für die schlechteste. Gibt man nurlivestreamer "URL"
ein, so wird eine Aufzählung der verfügbaren Streams ausgegeben, aus der man sich dann einen für die Eingabe desSTREAM
s auswählen und somit auch Zwischenstufen haben kann.-o PFAD/ZUR/ZIELDATEI__oder__ZIELDATEI
– Optional; anstatt den Stream an einen Mediaplayer: der Wahl (voreingestellt ist VLC) weiterzuleiten schreibt Livestreamer den Stream in die angegebene Zieldatei, welche entweder im Terminal-Arbeitsverzeichnis liegt oder im angegebenen Pfad.
Bei Live-Streams stoppt man das Programm mit der Tastenkombination Strg + C .
Die von Livestreamer für Streaming-URLs unterstützten Streaming-Protokolle bzw. HTTP-Streaming-Arten sind die folgenden:
Unterstützte Streaming-Protokolle und HTTP-Streaming-Arten | |||
Name | Präfix(e) | Bemerkung(en) | Format der ZIELDATEI bei Speicherung (siehe Optionen) |
Adobe HTTP Dynamic Streaming (AdobeHDS bzw.HDS) | hds:// | Flash Video | |
Akamai HD Adaptive Streaming (AkamaiHD 🇬🇧) | akamaihd:// | scheint für normale HTTP-Streams zu funktionieren | ??? |
Apple HTTP Live Streaming (AppleHLS bzw. HLS) | hls:// hlsvariant:// | * hls:// für .m3u8 * hlsvariant:// für master.m3u8 | MPEG-TS |
Real Time Messaging Protocol | rtmp:// rtmpe:// rtmps:// rtmpt:// rtmpte:// | ??? | |
Progressive HTTP, HTTPS, etc. | httpstream:// | scheint für normale HTTP-Streams zu funktionieren | ??? |
Auf ein Protokoll kann direkt zugegriffen werden indem man es im URL-Format beschreibt:
protocol://path [SCHLÜSSEL=WERT]
So sieht es aus, wenn man auf einen Stream zugreift, dem Extra-Parameter übermittelt werden (z.B. RTMP):
livestreamer "rtmp://streaming.server.net/playpath live=1 swfVfy=http://server.net/flashplayer.swf"
Die meisten Streaming-Technologien benötigen die Angabe einer HTTP-URL, dies ist ein AdobeHDS-Stream:
livestreamer hds://streaming.server.net/playpath/manifest.f4m
Dabei wird der Protokoll-Präfix http://
durch hds://
ersetzt; alternativ kann hds://http://streaming.server.net/playpath/manifest.f4m
angegeben werden
Optionen¶
Nachfolgend eine Übersicht der wichtigsten Optionen. Für eine vollständige Übersicht siehe livestreamer -h
[2]. Weitere Hilfe findet man in der offiziellen Dokumentation 🇬🇧. Außerdem – sofern man Livestreamer aus den offiziellen Paketquellen installiert hat – gibt es eine Manpage.
Optionen | |||
kurze Option | entsprechende lange Option | Bedeutung | Bemerkung(en) |
-h | --help | Hilfe anzeigen | |
-V | --version | die Versionsnummer des Programms anzeigen und danach Letzteres schließen | |
--plugins | alle zur Zeit installierten Plugins auflisten | ||
--config DATEINAME | lade Optionen aus der angegebenen Konfigurationsdatei | es können mehrere Konfigurationsdateien angegeben werden, wobei dann die zuletzt angegebene die höchste Priorität besitzt | |
-l LEVEL | --loglevel LEVEL | setzt den Schwellwert der Fehlerausgabe | zulässige Schwellwerte sind: none , error , warning , info , debug |
--no-version-check | nicht nach möglichen neueren Versionen von Livestreamer suchen | ||
--version-check | nach möglichen neueren Versionen des Programms anzeigen und danach Letzteres schließen | ||
-p KOMMANDO | --player KOMMANDO | den Player angeben, an welchen die Streaming-Daten weitergereicht werden, eventuell zusätzlich mitsamt anschließender Player-spezifischen Option | * das KOMMANDO kann im einfachsten Fall lediglich der Name des Players selbst sein, z.B. mpv * dies ist eine Shell-ähnliche Syntax welche das Übermitteln von Optionen an den Player unterstützt * Beispiel: "vlc --file-caching=5000" * Um einen Player zu benutzen, dessen Pfad Leerzeichen enthält, müssen Letztere in Anführungszeichen gesetzt werden: "'/PFAD/MIT LEERZEICHEN/vlc' --file-caching=5000" * Per Voreinstellung wird VLC benutzt, sofern dieser sich im üblichen Programmpfad befindet |
-v | --verbose-player | dem Player erlauben, seine Konsolen-Ausgaben anzuzeigen | |
--player-no-close | den Player nicht von Livestreamer nach Beenden des Streams schließen lassen | ||
-o ZIELDATEI | --output ZIELDATEI | den Stream die angegebene ZIELDATEI schreiben anstatt ihn wiedergeben zu lassen | * anstatt ZIELDATEI kann man auch PFAD/ZUR/ZIELDATEI nehmen * falls die ZIELDATEI bereits existiert wird man gefragt ob diese überschrieben werden soll * das Format der ZIELDATEI wird bestimmt durch das Streaming-Protokoll bzw. die HTTP-Streaming-Art des jeweiligen Streams, für Genaueres siehe die entspr. Tabelle in Benutzung |
Konfiguration¶
Weil es unbequem ist, jedes Mal Optionen auf der Kommandozeile zu schreiben, kann Livestreamer stattdessen auch Optionen aus einer Konfigurationsdatei lesen. Der Dateipfad ist entweder ~/.config/livestreamer/config oder ~/.livestreamerrc im Homeverzeichnis. Man kann den Speicherort aber auch selber auf der Kommandozeile durch die --config
-Option bestimmen. Die Konfigurationsdatei ist standardmäßig nicht vorhanden und muss angelegt werden.
Es handelt sich um eine einfache Textdatei [3] und sollte eine Kommandozeilen-Option pro Zeile im folgenden Format enthalten, wobei die beiden sonst üblichen vorangestellten Bindestriche weggelassen werden:
OPTION=WERT
oder, für eine Option ohne Wert:
OPTION
Jegliche Anführungszeichen sind dabei Teil des Wertes, deshalb sind Erstere nur dann zu benutzen, wenn der Wert diese auch braucht, beispielsweise wenn ein Player mit Leerzeichen in dessen Pfad bestimmt wird.
Hier ein Beispiel für eine Konfigurationsdatei (Zeilen, die mit #
beginnen, sind Kommentare):
# Player-Optionen: player=mpv --cache=16384 verbose-player player-no-close # Authentifizierung mit Twitch: twitch-oauth-token=mein_token
Pluginspezifische Optionen kann man in ebensolche Konfigurationsdateien schreiben, so dass diese Optionen die Haupt-Konfigurationsdatei außer Kraft setzen, sobald eine URL benutzt wird, welche mit einem betreffenden Plugin zusammenpasst.
Die Namen der pluginspezifischen Konfigurationsdateien sind solche wie die der Haupt-Konfigurationsdatei, jedoch erweitert um den Namen des jeweiligen Plugins 🇬🇧, z.B. ~/.config/livestreamer/config.twitch oder ~/.livestreamerrc.youtube im Homeverzeichnis.
Mehr Informationen zur pluginspezifischen Benutzung gibt es in der Livestreamer-Dokumentation 🇬🇧.
Livestreamer versucht, benutzerspezifische Plugins aus dem Verzeichnis ~/.config/livestreamer/plugins/ zu laden. Benutzerspezifische Plugins mit dem gleichen Namen wie eingebaute haben Vorrang vor letzteren. Dies ist sinnvoll,wenn man Plugins unabhängig von der Livestreamer-Version upgraden möchte.
Eine Liste aller verfügbaren Plugins – auch der in Livestreamer eingebauten – erhält man mit: [2]
livestreamer --plugins
Beispiele¶
Streamen¶
Man stoppt den Livestreamer entweder, indem man das entsprechemde Player-Fenster schließt oder im Terminal-Fenster mit der Tastenkombination Strg + C .
Live-Streams¶
Als Live-Stream kann z.B. bei diesem HDS von 3sat 🇩🇪 mittels via Netzwerkanalyse ermittelten manifest.f4m
-URL zunächst das Angebot an den verschiedenen Stream-Qualitäten abgefragt werden: [2]
livestreamer "hds://http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27"
Es erscheint beispielhaft die Ausgabe:
[cli][info] Found matching plugin stream for URL hds://http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27 Available streams: 1096k, 1496k (best), 164k (worst), 229k, 282k, 476k, 750k
Beispielhaft wird jetzt die 750k-Stream-Qualität ausgewählt, welche standardmäßig zum VLC gestreamt wird: [2]
livestreamer "hds://http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" 750k
Es erscheint beispielhaft die Ausgabe:
[cli][info] Found matching plugin stream for URL hds://http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27 [cli][info] Available streams: 1096k, 1496k (best), 164k (worst), 229k, 282k, 476k, 750k [cli][info] Opening stream: 750k (hds) [cli][info] Starting player: /usr/bin/vlc [cli][info] Player closed [cli][info] Stream ended
Der Stream hat eine Auflösung von 640x360 sowie eine Bildwiederholrate von 25 Bildern pro Sekunde.
Der gleiche Stream wird an mpv geleitet, wobei diesmal die Protokoll-Angabe http://
weggelassen wird:
livestreamer -p mpv -v "hds://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" 750k
Dabei wird die Konsolen-Ausgaben von mpv mit angezeigt.
Hier erfolgt diese Ausgabe:
[cli][info] Found matching plugin stream for URL hds://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27 [cli][info] Available streams: 1096k, 1496k (best), 164k (worst), 229k, 282k, 476k, 750k [cli][info] Opening stream: 750k (hds) [cli][info] Starting player: mpv Playing: - [file] Reading from stdin... [ffmpeg/demuxer] flv: video stream discovered after head already parsed [ffmpeg/demuxer] flv: audio stream discovered after head already parsed (+) Video --vid=1 (h264) (+) Audio --aid=1 (aac) AO: [pulse] 44100Hz stereo 2ch float VO: [opengl] 640x360 yuv420p AV: 00:00:06 A-V: 0.000 Cache: 9s+595KB Exiting... (Quit) [cli][info] Player closed [cli][info] Stream ended
Ein weiteres Beispiel mit dem MPlayer, wobei diesmal die bestmögliche Qualität ausgewählt wird:
livestreamer -p "mplayer -cache 2048" -v "hds://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" best
Dabei wird die Datei 2048 kBytes (2 MBytes) groß lokal gepuffert.
Ausgabe:
[cli][info] Found matching plugin stream for URL hds://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27 [cli][info] Available streams: 1096k, 1496k (best), 164k (worst), 229k, 282k, 476k, 750k [cli][info] Opening stream: 1496k (hds) [cli][info] Starting player: mplayer -cache 2048 MPlayer 1.1-4.8 (C) 2000-2012 MPlayer Team mplayer: could not connect to socket mplayer: No such file or directory Failed to open LIRC support. You will not be able to use your remote control. Playing -. Reading from stdin... Cache fill: 0.00% (0 bytes) libavformat version 54.20.4 (external) Mismatching header version 54.20.3 libavformat file format detected. [flv @ 0x7f1dc76c2600]max_analyze_duration reached [flv @ 0x7f1dc76c2600]Estimating duration from bitrate, this may be inaccurate [lavf] stream 0: video (h264), -vid 0 [lavf] stream 1: audio (aac), -aid 0 VIDEO: [H264] 852x480 0bpp 25.000 fps 1433.6 kbps (175.0 kbyte/s) Clip info: audiochannels: 2 aacaot: 2 Load subtitles in ./ ========================================================================== Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family libavcodec version 54.35.1 (external) Mismatching header version 54.35.0 Selected video codec: [ffh264] vfm: ffmpeg (FFmpeg H.264) ========================================================================== ========================================================================== Opening audio decoder: [ffmpeg] FFmpeg/libavcodec audio decoders AUDIO: 44100 Hz, 2 ch, floatle, 98.3 kbit/3.48% (ratio: 12288->352800) Selected audio codec: [ffaac] afm: ffmpeg (FFmpeg AAC (MPEG-2/MPEG-4 Audio)) ========================================================================== AO: [pulse] 44100Hz 2ch floatle (4 bytes per sample) Starting playback... Unsupported AVPixelFormat 53 Movie-Aspect is 1.78:1 - prescaling to correct movie aspect. VO: [vdpau] 852x480 => 854x480 Planar YV12 A: 7.0 V: 7.0 A-V: 0.001 ct: 0.008 0/ 0 13% 2% 0.4% 0 0 50% Exiting... (Quit) [cli][info] Player closed [cli][info] Stream ended
On-Demand-Streams¶
Als On-Demand-Stream kann z.B. dieser HDS von 3sat 🇩🇪 mittels via Netzwerkanalyse ermittelten manifest.f4m
-URL in bestmöglicher Qualität zum mpv gestreamt werden: [2]
livestreamer -p mpv -v "hds://http://zdf_hdflash_none-f.akamaihd.net/z/meta-files/3sat/smil/f4m/300/17/02/170213_koralle_nano/1/170213_koralle_nano.smil/manifest.f4m?g=BJMZUTUQBQNB&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" best
Dabei wird die Konsolen-Ausgaben von mpv mit angezeigt.
Es erscheint beispielhaft die Ausgabe:
[cli][info] Found matching plugin stream for URL hds://http://zdf_hdflash_none-f.akamaihd.net/z/meta-files/3sat/smil/f4m/300/17/02/170213_koralle_nano/1/170213_koralle_nano.smil/manifest.f4m?g=BJMZUTUQBQNB&hdcore=3.8.0&plugin=aasp-3.8.0.52.27 [cli][info] Available streams: 1504k, 218k (worst), 2309k, 3315k (best), 471k, 775k [cli][info] Opening stream: 3315k (hds) [cli][info] Starting player: mpv Playing: - [file] Reading from stdin... [ffmpeg/demuxer] flv: video stream discovered after head already parsed [ffmpeg/demuxer] flv: audio stream discovered after head already parsed (+) Video --vid=1 (h264) (+) Audio --aid=1 (aac) AO: [pulse] 44100Hz stereo 2ch float VO: [opengl] 1280x720 yuv420p AV: 00:00:04 / 00:00:47 (9%) A-V: 0.000 Cache: 10s+10MB Exiting... (Quit) [cli][info] Player closed [cli][info] Stream ended
Herunterladen¶
Live-Streams¶
Als Live-Stream kann z.B. dieser HDS von 3sat 🇩🇪 mittels via Netzwerkanalyse ermittelten manifest.f4m
-URL in bestmöglicher Qualität in die Datei video_50 im selben Terminal-Arbeitsverzeichnis heruntergeladen werden: [2]
livestreamer "hds://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" best -o video_50
Ausgabe:
[cli][info] Found matching plugin stream for URL hds://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27 [cli][info] Available streams: 1096k, 1496k (best), 164k (worst), 229k, 282k, 476k, 750k [cli][info] Opening stream: 1496k (hds) [download][video_50] Written 7.3 MB (36s @ 179.0 KB/s) ^CInterrupted! Closing currently open stream...
Die Datei namens video_50 hat das Format Flash Video sowie eine Auflösung von 852x480 und eine Bildwiederholrate von 25.
On-Demand-Streams¶
Als Beispiel ein Download eines kurzen Videos aus der ARD Mediathek 🇩🇪 in bestmöglicher Qualität in die Datei video_53 im selben Terminal-Arbeitsverzeichnis: [2]
livestreamer "http://www.ardmediathek.de/tv/Rundschau-Magazin/Trudeau-trifft-Trump/BR-Fernsehen/Video?bcastId=39022940&documentId=40662270" best -o video_53
Weil es das Plugin ard_mediathek
gibt, reicht hier die Eingabe der Webseiten-URL.
Ausgabe:
[cli][info] Found matching plugin ard_mediathek for URL http://www.ardmediathek.de/tv/Rundschau-Magazin/Trudeau-trifft-Trump/BR-Fernsehen/Video?bcastId=39022940&documentId=40662270 [cli][info] Available streams: 144p (worst), 144p_alt, 288p, 288p_alt, 288p_alt2, 360p, 360p_alt, 360p_alt2, 544p (best), 544p_alt, 544p_alt2, auto [cli][info] Opening stream: 544p (http) [download][video_53] Written 35.4 MB (7s @ 5.6 MB/s) [cli][info] Stream ended
Die Datei namens video_53 hat das Format MPEG-4 sowie eine Auflösung von 1280x720 und eine Bildwiederholrate von 25 Bildern pro Sekunde.
Links¶
Intern¶
Streaming Grundlegendes zum Thema; Audio- und Videostreams mittels Browser-Plugins oder eigenständigen Programmen abspielen
Streams speichern Übersichtsartikel
Internetradio Übersichtsartikel
Internet-TV Übersichtsartikel
Extern¶
Projektseite 🇬🇧
Manpage 🇬🇧