ubuntuusers.de

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.

Wiki/Icons/terminal.png 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.:

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; entweder best für die beste Stream-Qualität oder worst für die schlechteste. Gibt man nur livestreamer "URL" ein, so wird eine Aufzählung der verfügbaren Streams ausgegeben, aus der man sich dann einen für die Eingabe des STREAMs 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.

Intern

Extern

Diese Revision wurde am 24. Februar 2021 09:59 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia, Streaming, Netzwerk, Shell, Internet, Streams sichern, Python