ubuntuusers.de

Du betrachtest eine alte Revision dieser Wikiseite.

Streams speichern

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Wiki/Icons/multimedia.png Häufig werden im Internet Multimedia-Inhalte als Streams angeboten. Vor allem Filmtrailer oder Hörbeispiele für Musik, aber auch Interviews werden dabei meist in der Internetseite eingebettet abgespielt. Dies soll zum einen gewährleisten, dass ein Benutzer länger auf der Seite bleibt und sich vielleicht noch weitere Inhalte anschaut. Zum anderen möchte man so auch die dauerhafte Speicherung der Medien durch den Konsumenten verhindern.

"Da Streaming Media speziell für Echtzeit-Übertragungen und nicht für die dauerhafte Speicherung gedacht ist, muss die Qualität entsprechend niedrig sein, um bei den heute üblichen Datenübertragungsraten eine flüssige Übertragung zu ermöglichen. Ärgerlich ist daher die Verwendung der Streaming-Technik bei Inhalten, bei denen es nicht auf eine Echtzeit-Übertragung ankommt, etwa bei Film-Trailern." (aus Wikipedia, der freien Enzyklopädie)

Hinweis:

Dieser Artikel behandelt hauptsächlich das Speichern von Video-Streams. Für die Aufnahme von Internetradio gibt es den Artikel Internetradio aufzeichnen.

Programme

Es gibt diverse Ansätze und Programme, um Video-Streams zu speichern. Nachfolgend eine Übersicht in alphabetischer Reihenfolge.

Clipgrab

Mit Clipgrab kann man ganz einfach Videos von Online-Multimediaplattformen wie YouTube, Clipfish, MyVideo etc. herunterladen und auf Wunsch auch konvertieren (z.B. in MP3, OGG Vorbis/Theora oder WMV). All dies geschieht über eine sehr übersichtliche und einfach gestaltete grafische Oberfläche, die keiner weiteren Erläuterung bedarf und damit perfekt für Einsteiger geeignet ist.

clive

Das Kommandozeilenwerkzeug clive ist ein in Perl geschriebenes Programm, mit dem man einfach und komfortabel Flashvideos (.flv) von Seiten wie YouTube 🇩🇪, Google Video 🇩🇪, Vimeo 🇬🇧, Dailymotion 🇩🇪 und vielen anderen auf seinem Computer abspeichern kann.

"Download"-Seiten

Manche Internetseiten können die jeweiligen Videos mit Hilfe eines Skripts herunterladen. Hierzu kopiert man einfach den Link zu der Videodatei und fügt diesen in das Eingabefeld der Seite ein. Nun muss man nur noch auf "Download" klicken, und das Video wird auf die Festplatte gespeichert. Bekannte "Download"-Seiten sind:

Firefox-Erweiterungen

Es gibt Erweiterungen für den Browser Firefox, mit deren Hilfe man Videodateien herunterladen kann. Wie man eine Firefox-Erweiterung installiert, wird im Artikel Firefox/Erweiterungen beschrieben. Eine der bekanntesten und gut gepflegt ist der Video DownloadHelper 🇩🇪.

Bei manchen Seiten wie z.B. Google Video gibt es meist mehrere Möglichkeiten, wenn die Datei in unterschiedlichen Formaten angeboten wird. Videos auf Flash-Seiten liegen oft im Format .flv (Flash Video) vor. Diese FLV-Dateien kann man mit dem MPlayer abspielen und z.B. mit avconv in andere Formate umwandeln.

MediathekView

MediathekView (früher nur Mediathek) ist ein Programm, mit dem in von etlichen öffentlich-rechtlichen Fernsehanstalten bereitgestellten Mediatheken Sendungen (oder Ausschnitte) betrachtet und auch gespeichert werden können.

youtube-dl

Videos aus verschiedenen Online-Portalen inklusive den Mediatheken der öffentlich-rechtlichen Sender Deutschlands können auch mit dem Kommandozeilenprogramm youtube-dl 🇬🇧 heruntergeladen werden. Weitere Details sind dem separaten Artikel youtube-dl zu entnehmen.

Herausfinden der Stream-Adresse

Möchte man Internet-Streams dauerhaft speichern, so muss man zunächst die Adresse herausfinden, unter der der Inhalt abgelegt ist. Fast alle Medien liegen in einem weit verbreiteten Format vor, etwa .avi, .mov, .mp3, .mp4 oder .wmv. Die Adressen zu diesen Inhalten sind jedoch in den seltensten Fällen direkt sichtbar. Meist wird auf eine Streaming-URL verwiesen, die dafür sorgt, dass das entsprechende Plugin zum Abspielen aufgerufen wird. Um die Adresse herauszufinden, hat man folgende Möglichkeiten:

Allgemein

  • Die Adresse kann im Quelltext der Internetseite aufgeführt sein.

  • Beim Abspielen des Streams wird die Adresse (kurzzeitig) angezeigt.

  • Beim Abspielen durch das Totem-Plug-in (siehe Streaming) kann die Adresse per rechte Maustaste-Klick"→Kopieren" in die Zwischenablage eingefügt werden.

  • Man kann die Firefox-Erweiterung MediaPlayerConnectivity 🇩🇪 / 🇬🇧 verwenden.

  • Man kann auch die Firefox-Erweiterung Adblock Plus verwenden, hierbei im FF unter "Ansicht" auf "Adblock Plus: Elemente der geöffneten Seite" klicken.

  • Man kann die Adresse mit Tshark "erschnüffeln" (engl.: sniff).

Wichtig ist hierbei, dass die Adresse die Endung eines gültigen Audio- oder Videoformats wie z.B. .avi, .mov, .mp3, .mp4 oder .wmv hat. Beginnt die Adresse darüber hinaus mit http://, so handelt es sich um eine normale Internet-URL. Hat die Adresse jedoch den Anfang mms:// oder rtsp://, so deutet dies auf eine Streaming-URL hin, hinter der die tatsächliche Adresse versteckt ist:

  • mms://Microsoft Media Server Protocol (MMS) – deutet auf ein Microsoft-Format, meist .wmv hin.

  • rtsp://RealTime Streaming Protocol (RTSP) – deutet entweder auf eine Datei im Real-Media Format hin (meist .rm), oder aber auf eine Datei im MPEG-4-Format (.mp4).

  • rtmp:// (usw.) – Real Time Messaging Protocol (RTMP) – deutet entweder auf eine Datei im MPEG-4-Format (.mp4) hin oder auf eine Datei im Flash-Video-Format (.flv).

Bei URLs mit der Endung .asx handelt es sich um eine Container-Datei, in welcher sich wiederum eine mms://-Datei befindet. Man erhält die Adresse der mms://-Datei, indem man:

  • mit cURL den Datei-Inhalt der URL mit der .asx-Endung herunterlädt und damit auch direkt auf die Standardausgabe (stdout) des Terminals[3] schreibt:

    curl URL.asx 

    oder

  • die URL mit der .asx-Endung direkt in den Browser eingibt, oder

  • die Datei mit einem Download-Manager herunterlädt und sie dann mit einem Text-Editor öffnet.

Nun sieht man die Adresse der mms://-Datei. Ähnlich verhält es sich auch mit den Container-Dateitypen .mov, .f4m .smil und .meta.

Es kommt auch vor, dass sich die Adresse in einer URL mit der Endung .xml versteckt, welche man dann direkt in den Browser eingibt und in der Ausgabe entweder direkt die Adresse sieht oder aber vielleicht auch eine weitere .xml-URL.

Eine weite Variante sind URLs mit der Endung .m3u8. Sie sind Bestandteil des HTTP Live Streaming Protocols, auch HLS abgekürzt. Die m3u8-Datei funktioniert als dynamische "playlist" bzw. Containerdatei, die Links auf weitere .m3u8-Dateien für Streams in unterschiedlichen Bitraten enthält. Die Container für die unterschiedlichen Bandbreiten enthalten einfache Links zu den segmentierten Dateien im .ts-Format, die vom Client nacheinander heruntergeladen werden.

Tshark

Tshark ist die Kommandozeilenversion des Paket-Sniffers Wireshark. Hier wird der Befehl so gestaltet, dass Tshark u.a. Paket-Details liefert, seine Ausgabe wird dann aber an Grep umgeleitet, welches sie dann nach einschlägigen Multimedia- und Streaming-Schlüsselbegriffen filtert und alle betreffenden Zeilen (mitsamt einer Zeile davor und dahinter) danach an die Standardausgabe des verwendeten Terminals[3] weiterleitet.

1) Voraussetzungen:

  • Tshark sollte wegen Sicherheitsrisiken nicht als Root, sondern als normaler Benutzer mit Root-Privilegien via Setuid-Bit ausgeführt werden. Wie man das einrichtet, steht im entsprechenden Abschnitt des Artikels Wireshark.

  • Die Profileinstellungen des verwendeten Terminals[3] müssen so eingestellt sein, dass der Rollbalken auf "unbegrenzt" steht, also NICHT zurückrollen kann! Sonst wird nämlich ein Großteil der Ausgabe des Duos Tshark / Grep vom Terminal gleich wieder ins Nirwana geschickt!

  • Man muss die korrekte Bezeichnung der Netzwerkschnittstelle wissen, welche Tshark überwachen soll. Um diese zu ermitteln, ruft man ein Terminal[3] auf und gibt dort den folgenden Befehl ein:

tshark -D 

2) Ausführung:

  • Man ruft wieder ein Terminal[3] auf und gibt dort den folgenden Befehl ein:

tshark -i <Netzwerkschnittstelle> -s 0 -B 50 -V -P -l | grep -E --context=1 "GET|POST|URI|baseURL|statuscode|/type|/title|content|detail|assetId|originChannelId|originChannelTitle|/channel|duration|/length|airtime|timetolive|/fsk|hasCaption|vcmsUrl|formitaet|/quality|url|/ratio|height|width|videoBitrate|audioBitrate|filesize|facet|mms|rtsp|rtmp|llnwd.net|core-cdn.net|beitragsDetails|[Hh]ost|socks|protocol|playpath|path|playlist|tcUrl|pageUrl|app|hexstring|days|[Aa]uth|string|conn|:data|flashVer|[Ss]ubscri|resume|timeout|start|stop|[Ss]ecure|[Tt]oken|[Kk]ey|[Ii]dentifier|jtv|JSON|[Hh]ash|buffer|skip|conndata|output|SOCKS4|proxy|connection attempt|version|set_playlist|src|edgefcs.net|dataURL|cdn-vod-fc|vars_player.videorefFileUrl|video lang|url quality=|arte_vp_url=|videothek|json|m3u8|manifest|f4m|\.meta|asx|mov|smil|\.avi|3gp|aac|flac|flv|h264|mkv|mp2|mp3|mp4|ogg|SWF|swf|\.ts|vorbis|vp8|webm|wma|wmv|image/x-icon|stream|videoplayback|annotations_invideo|TCP Retransmission|Application Data|Client Hello|deleteStream|User Control Message|[Hh]and[Ss]hake|client|[Ss]ignature|connect|Window Acknowledgement Size|Set Peer Bandwidth|Set Chunk Size|NetConnection|createStream|FCSubscribe|onBWCheck|_result|Stream Begin|NetStream|RtmpSampleAccess|onBWDone|Set Buffer Length|Stream Is Recorded|[Mm]eta[Dd]ata|Video Data|Audio Data|Aggregate|setBandwidthLimit|Acknowledgement|LIVE|server|mediaType|mimeType|videoPlayerUrl|/play|liveUrl|/live|play.'|[Ss]tarted|[Pp]laying" 

  • Nun ruft man eine Streaming-Seite auf bzw. lädt sie neu (ggf. leert man auch den Webseiten-Cache des Browsers). Ins Terminal werden jetzt sowohl Elemente des Seiten-Quelltextes als auch – hoffentlich – alle relevanten Daten des abgespielten Streams geschrieben.

  • Ca. 5 Sekunden, nachdem die Übertragung des Streams begonnen hat, stoppt man Tshark und Grep mit der Tastenkombination Strg + C .

  • Zunächst rückwärts suchen im Terminal nach playing oder auch nach Started.

  1. Beispiel-Seite ZDF: http://www.zdf.de/ZDFmediathek#/beitrag/video/2040580/ZDF-heute-Sendung-vom-01-Dezember-2013 , Quelltext der 17-Uhr-ZDF-heute-Sendung-vom-01-Dezember-2013 🇩🇪


Ausschnitt, in welchem man mit einem oder beiden der vorgenannten Begriffe fündig geworden ist:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
                    String: status
            Property 'code' String 'NetStream.Play.Start'
                Name: code
--
                    String: code
                String 'NetStream.Play.Start'
                    AMF0 type: String (0x02)
                    String length: 20
                    String: NetStream.Play.Start
            Property 'description' String 'Started playing zdf/13/12/131201_h17_1456k_p13v11.mp4.'
                Name: description
--
                    String: description
                String 'Started playing zdf/13/12/131201_h17_1456k_p13v11.mp4.'
                    AMF0 type: String (0x02)
                    String length: 54
                    String: Started playing zdf/13/12/131201_h17_1456k_p13v11.mp4.
            Property 'details' String 'zdf/13/12/131201_h17_1456k_p13v11.mp4'
                Name: details
                    String length: 7
                    String: details
                String 'zdf/13/12/131201_h17_1456k_p13v11.mp4'
                    AMF0 type: String (0x02)
                    String length: 37
                    String: zdf/13/12/131201_h17_1456k_p13v11.mp4
            Property 'clientid' String 'rAAYwWGA'

  • Oder rückwärts suchen nach play(', falls die Suche nach playing oder nach Started nichts gefunden hat (ersteres, bis man im nahen Kontext mit RTMP ??? play(' fündig geworden ist, wobei ??? für eine beliebige dreistellige Zahl steht. Rechts davon steht dann der hintere Teil unserer gesuchten URL.

Ausschnitt, in welchem man mit play(' fündig geworden ist:

1
2
  9.651178 77.20.162.172 -> 92.122.207.15 RTMP 169 play('mp4:zdf/13/12/131201_h17_1456k_p13v11.mp4') | Set Buffer Length 1,2000ms
Frame 472: 169 bytes on wire (1352 bits), 169 bytes captured (1352 bits) on interface 0

  • Danach rückwärts suchen nach zdf/13/12/131201_h17_1456k_p13v11.mp4 :

Ausschnitt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<formitaet
                    basetype="h264_aac_mp4_http_na_na"
                    isDownload="false">
--
                        veryhigh
                        </quality>
                    <url>
                        http://rodl.zdf.de/none/zdf/13/12/131201_h17_1456k_p13v11.mp4
                        </url>
                    <ratio>
                        16:9
                        </ratio>
                    <height>
                        480
                        </height>
                    <width>
                        852
                        </width>
                    <videoBitrate>
                        1400000
                        </videoBitrate>
                    <audioBitrate>
                        56000
                        </audioBitrate>
                    <filesize>
                        111345165
                        </filesize>
                    <facets>
                        <facet>
                            restriction_useragent
                            </facet>
                        </facets>
                    </formitaet>
                <formitaet

2. Beispiel-Seite BBC: http://www.bbc.co.uk/news/magazine-16957988 , Quelltext Seite BBC: Jungle tribes untouched 🇬🇧

  • Ergebnis der Rückwärtssuche nach playing oder auch nach Started:

Ausschnitt:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
                    String: status
            Property 'code' String 'NetStream.Play.Start'
                Name: code
--
                    String: code
                String 'NetStream.Play.Start'
                    AMF0 type: String (0x02)
                    String length: 20
                    String: NetStream.Play.Start
            Property 'description' String 'Started playing public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4.'
                Name: description
--
                    String: description
                String 'Started playing public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4.'
                    AMF0 type: String (0x02)
                    String length: 93
                    String: Started playing public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4.
            Property 'details' String 'public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4'
                Name: details
                    String length: 7
                    String: details
                String 'public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4'
                    AMF0 type: String (0x02)
                    String length: 76
                    String: public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4
            Property 'clientid' String 'qAAxA2AA'

  • Dann rückwärts suchen nach public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4:

Man findet u.a.:

1
2
  8.266701 77.20.162.172 -> 92.122.207.122 RTMP 481 play('mp4:public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4?auth=daEdMd4dYcab_cncwcQbJdwdkbTb_baabbO-bsN0YO-bWG-JqrGApwoIDqGpyE&aifp=v001&slist=public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4;public/mps_h264_hi/public/news/world/837000/837021_h264_1500k.mp4;public/flash/news/world/837000/837021_16x9_NewsWebMP4_368k.mp4')
Frame 652: 481 bytes on wire (3848 bits), 481 bytes captured (3848 bits) on interface 0

Rechts von RTMP ??? play(' steht dann der hintere Teil unserer gesuchten URL, hier ist es eine Streaming-URL, in diesem Fall der "Playpath", manchmal auch separat mit y spezifiziert beim späteren rtmpdump-Herunterlade-Befehl. (Allerdings muss beim "Playpath" das mp4: am Anfang manchmal auch weggelassen werden, siehe das "Fazit:" weiter unten.)

...oder aber man findet auch dieses:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
                    String: http://emp.bbci.co.uk/emp/releases/worldwide/revisions/749603_749269_749444_6/749603_749269_749444_6_emp.swf
            Property 'tcUrl' String 'rtmp://cp45414.edgefcs.net:1935/ondemand?auth=daEdMd4dYcab_cncwcQbJdwdkbTb_baabbO-bsN0YO-bWG-JqrGApwoIDqGpyE&aifp=v001&slist=public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4;public/mps_h
                Name: tcUrl
                    String length: 5
                    String: tcUrl
                String 'rtmp://cp45414.edgefcs.net:1935/ondemand?auth=daEdMd4dYcab_cncwcQbJdwdkbTb_baabbO-bsN0YO-bWG-JqrGApwoIDqGpyE&aifp=v001&slist=public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4;public/mps_h264_hi/public/new
                    AMF0 type: String (0x02)
                    String length: 330
                    String [truncated]: rtmp://cp45414.edgefcs.net:1935/ondemand?auth=daEdMd4dYcab_cncwcQbJdwdkbTb_baabbO-bsN0YO-bWG-JqrGApwoIDqGpyE&aifp=v001&slist=public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4;public/mps_h264_h
            Property 'fpad' Boolean false

Anmerkung 1: rtmp://cp45414.edgefcs.net:1935/ondemand?auth=daEdMd4dYcab_cncwcQbJdwdkbTb_baabbO-bsN0YO-bWG-JqrGApwoIDqGpyE&aifp=v001&slist=public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4 (sie ist hier drüber alle drei Male gleich) ist (auch) die gesuchte Stream-URL, damit kann man das Video anders, als ein paar Zeilen weiter unten gezeigt, direkt herunterladen, also ohne sie sich zuerst zusammensetzen zu müssen.

  • Ggf. weitersuchen rückwärts nach public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4 . Letzteres ist übrigens in diesem Beispiel der hintere Teil einer rtmp-Streaming-URL, in diesem Fall der "Playpath", manchmal auch separat mit y spezifiziert beim späteren rtmpdump-Herunterlade-Befehl.

Ausschnitt (aus einem anderen Versuch, BBC: Jungle tribes untouched, 2. Versuch):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
            bitrate="800"
            encoding="h264"
            expires="2099-01-01T00:00:00+00:00"
            height="360"
            kind="video"
            service="journalism_nonuk_stream_h264_flv_med"
            type="video/mp4"
            width="640">
            <connection
                application="ondemand"
                authExpires="2013-12-04T18:02:15+00:00"
                authExpiresOffset="6680"
                [truncated] authString="auth=daEbmarcibucdd_bUcQc0dYacacbvbpa5aS-bsN1qp-bWG-DnsFIowpIEqFtyE&amp;aifp=v001&amp;slist=public/flash/news/world/837000/837021_16x9_NewsWebMP4_368k.mp4;public/mps_h264_hi/public/news/world/837000/837021_h264_1500
                identifier="mp4:public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4"
                priority="5"
                protocol="rtmp"
                server="cp45414.edgefcs.net"
                supplier="akamai"/>

Anmerkung 2: Hierbei handelt es sich um den Stream in mittlerer Qualität, es stehen aber auch welche in höherer u. niedrigerer Auflösung zur Verfügung.

Anmerkung 3 ist eigentlich ein Vorgriff auf den nächsten Abschnitt Streaming-Dateien herunterladen und steht hier nur der Vollständigkeit halber:

  • Herunterladen des Streams im Terminal[3] mit auth= -String hinten am "Playpath":

rtmpdump -r "rtmp://cp45414.edgefcs.net/ondemand/public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4?auth=daEayd2bjdnbca.bMbBbXbda3acbUdOckbG-bsNVi_-bWG-FqpEJqzoHBpFvxJ&aifp=v001&slist=public/mps_h264_hi/public/news/world/837000/837021_h264_1500k.mp4;public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4;public/flash/news/world/837000/837021_16x9_NewsWebMP4_368k.mp4" -o "$HOME/Videos/Videos/jungle-tribes.mp4" 

  • Herunterladen des Streams im Terminal[3] ohne auth= -String hinten am "Playpath":

rtmpdump -r "rtmp://cp45414.edgefcs.net/ondemand/mp4:public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4" -o "$HOME/Videos/Videos/jungle-tribes_2.mp4" 

oder

rtmpdump -r "rtmp://cp45414.edgefcs.net/ondemand/public/mps_h264_med/public/news/world/837000/837021_16x9_NewsWebMP4_800k.mp4" -o "$HOME/Videos/jungle-tribes_3.mp4" 

Fazit: Wenn man den auth= -String hinten am "Playpath" (hier bei der BBC auch identifier genannt) dran lässt, dann MUSS das mp4: am Anfang weggelassen werden, ohne auth= -String KANN das mp4: am Anfang weggelassen werden!
Weitere Beispiel-Seiten:

Falls einem die Ausgabe im Terminal zu detailarm oder aber zu umfangreich vorkommen sollte, so kann man den Befehl selbstverständlich auch modifizieren, indem man etwa:

  • bei Tshark die -V -Option weglässt, oder

  • bei Grep die Schlüsselbegriffe oder ihre Anzahl verändert, oder

  • die --context -Angabe von Grep verändert.

Streaming-Dateien herunterladen

Hat man die Adresse herausgefunden, dann sollte das Herunterladen funktionieren. Bei normalen HTTP-Adressen kann man die Datei mit einem Download-Manager ebenso herunterladen wie mittels VLC oder eines "Download Plug-In" für den Browser (z.B. Video Download Helper für den FireFox oder FVD für den Opera). Dateien aus einer Streaming-URL lassen sich in vielen Fällen mit dem MPlayer herunterladen. Das gleiche gilt auch für URLs mit der Endung .asx (siehe dazu auch hier). Dateien aus einer Streaming-URL mit rtmp:// lassen sich oft mit den beiden Programmen Flvstreamer bzw. Rtmpdump (sie haben nahezu die identische Befehls-Syntax, ersteres ist aber weniger leistungsfähig) laden. Diese können über die Paketquellen von Ubuntu bezogen werden.

Für Flvstreamer muss das folgende Paket installiert werden:[1]

  • flvstreamer (universe - command-line RTMP client)

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]

  • rtmpdump (universe - A small dumper for media content streamed over the RTMP protocol)

Befehl zum Installieren der Pakete:

sudo apt-get install rtmpdump 

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

In diesem Paket befindet sich ebenfalls das Programm Rtmpgw, welches ein HTTP-RTMP Stream Gateway ist. Für Näheres siehe bitte den Artikel Internet-TV/Stationen.

Für Rtmpdump siehe beispielsweise den Abschnitt Streaming-Videos von der ARD-Mediathek laden.

Alle Optionen findet man in den Manpages von Flvstreamer bzw. Rtmpdump.

Stream-Download und ggf. Umwandlung mit VLC

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

GUI

Ü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 den Speicherort und das gewünschte Video- bzw. Audioformat auswählen kann. Da der Stream umgewandelt wird, dauert der Vorgang mitunter recht lange.

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}" 

  • -v sowie -vv und -vvv sind die Verbose-Level von VLC bzw. cvlc und erhöhen damit auf der Kommandozeile entsprechend die Anzahl der ausgegebenen Programmaktivitätsinformationen (optional).

  • sout= lässt den Speicherort, den Namen und das Format der Aufnahme festlegen. Es werden hier Beispiele von verschieden ausführlichen Schreibweisen gezeigt.

    • file/mp4 bedeutet, dass die Ausgabe im MPEG4-Format in eine Datei geschrieben wird.

    • Videos/Datei.mp4 bedeutet, dass es die Ausgabe-Datei Datei.mp4 im Verzeichnis ~/Videos im Home-Verzeichnis ist.

  • vlc lässt den VLC Player ein Fenster öffnen und den Aufnahme-Fortschritt anzeigen. Möchte man hingegen kein VLC-Player-Fenster, so kann man cvlc anstelle vlc nehmen. cvlc lässt einen den Aufnahme-Fortschritt aber nur indirekt über einen Dateimanager beobachten!

  • vlc / cvlc müssen mit der Tastenkombination Strg + C beendet werden. Die optionale --play-and-exit-Option sorgt dafür, dass VLC / cvlc nach der Aufnahme des Tracks automatisch beendet wird.

Live-Streams sowie Video- oder Audio-Streams aufnehmen

HLS (HTTP Live Stream) aufnehmen

Ein HLS kann mit FFmpeg bzw. avconv (Libav) aufgenommen werden. Der Befehl dafür lautet:

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

RTMP-Streams aufnehmen

Zum Speichern von rtmp://-Streams siehe auch z.B. den Abschnitt deutschen ARTE-Live-Stream speichern.

MMS-Streams aufnehmen

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

  • bei direkten mms://-Dateien:

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.

  • Bei indirekten mms://-Dateien (URLs mit der Endung .asx) lautet dagegen die Befehlszeile:

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


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 mimms und mmsrip genutzt werden.

RTSP-Streams aufnehmen

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 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

Beispiele

Streaming-Videos der ARD-Mediathek

In der ARD-Mediathek 🇩🇪 liegt ein täglich aktualisiertes Repertoire an Sendungen und Kurzbeiträgen, welches man mit den beiden Programmen Flvstreamer bzw. Rtmpdump (sie haben nahezu die identische Befehls-Syntax) herunterladen kann. Man ruft einfach den gewünschten Beitrag auf und sieht sich dann den Quelltext der Internetseite an. Darin steht dann z.B. u.a.:

1. Möglichkeit

Beispiel-Seite(n):

  • http://programm.ard-digital.de/Themenschwerpunkte/Film/Klaus-Kinski-zum-20-Todestag

  • http://www.einsfestival.de/dokumentation_reportage/highlights/2011/kw_42/klaus_kinski.jsp

  • http://www.ardmediathek.de/ard/servlet/content/3517136?documentId=8474414

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<script type="text/javascript">

                    var player;
                    var mediaCollection;
                    var playerConfiguration;

					$jPlayer(document).ready(function(){
						mediaCollection = new MediaCollection("video", false, 1);
					    
					    
                       
						
						mediaCollection.setPreviewImage("/ard/servlet/contentblob/84/74/42/00/8474420/bild/213777");
						

                        
                        mediaCollection.addMedia(0)
						mediaCollection.addMediaStream(0, 1, "rtmp://swr.fcod.llnwd.net/a4332/e6/", "mp4:swr-fernsehen/nachtkultur/2011/10/489308.m");
						mediaCollection.addMediaStream(0, 2, "rtmp://swr.fcod.llnwd.net/a4332/e6/", "mp4:swr-fernsehen/nachtkultur/2011/10/489308.l");
						
                        mediaCollection.addMedia(2)
						mediaCollection.addMediaStream(2, 1, "", "mms://wm-ondemand.swr.de/a4332/e6/swr-fernsehen/nachtkultur/2011/10/489308.m.wmv");
						

                        playerConfiguration = new PlayerConfiguration();
                        // playerConfiguration.setRepresentation(quality, width, height, inLayer, scale)
                        
                            // video
                            playerConfiguration.setRepresentation(0, 512, 288, false, true);
                            playerConfiguration.setRepresentation(1, 512, 288, false, true);
                            playerConfiguration.setRepresentation(2, 960, 544, true, true);
                            playerConfiguration.setRepresentation(3, 1280, 720, true, true);
                        

                        playerConfiguration.setShowToobarQualNavButtons(false);

                        player = new Player("player-8474414", playerConfiguration, mediaCollection);
						player.init();
                       if($jPlayer(document).getUrlParam("currentTimeCode")!= null){
                        var vm = new ViteMessage(player, playerConfiguration, mediaCollection, $jPlayer(document).getUrlParam("currentTimeCode"));
                    }

					});
			</script>

			<div id="player-8474414"></div>
		</div>
      		<div class="mt-player-content_wrapper">
        		<div class="mt-player_content">
  • In Zeile 19 steht die Roh-Streamadresse des Large-Streams (da drüber die in Middle-Qualität): "rtmp://swr.fcod.llnwd.net/a4332/e6/", "mp4:swr-fernsehen/nachtkultur/2011/10/489308.l".

  • Aus dieser entfernt man die Zeichenfolge ", " und hat dann die fertige Stream-Adresse: "rtmp://swr.fcod.llnwd.net/a4332/e6/mp4:swr-fernsehen/nachtkultur/2011/10/489308.l .

  • Nun ruft man ein Terminal[3] auf und gibt die Streaming-Adresse sowie den Dateipfad zum Speichern in folgender Reihenfolge an:

rtmpdump -z -r "rtmp://swr.fcod.llnwd.net/a4332/e6/mp4:swr-fernsehen/nachtkultur/2011/10/489308.l" -o "$HOME/Videos/Kinski.mp4" --resume 

Hinweis:

  • Die Option -z bzw. --debug ist nicht unbedingt nötig. Sie kann aber bei Misslingen des Ladevorgangs Hinweise auf die Fehlerquellen geben.

  • Die Option -e bzw. --resume ist ebenfalls nicht unbedingt nötig. Sie sorgt aber ggf. für den Ladevorgang in mehreren Teilen.


2. Möglichkeit

Beispiel-Seite: http://www.ardmediathek.de/ard/servlet/content/3517136?documentId=8619708

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<script type="text/javascript">

                    var player;
                    var mediaCollection;
                    var playerConfiguration;

					$jPlayer(document).ready(function(){
						mediaCollection = new MediaCollection("video", false, 1);
					    
					    
                       
						mediaCollection.setSubtitleUrl("http://www.ard.de/static/avportal/untertitel_mediathek/8619708.xml", 0);
						
						mediaCollection.setPreviewImage("/ard/servlet/contentblob/86/19/72/20/8619722/bild/231711");
						

                        
                        mediaCollection.addMedia(0)
						mediaCollection.addMediaStream(0, 0, "rtmp://vod.daserste.de/ardfs/", "mp4:videoportal/mediathek/ttt+-+titel+thesen+temperamente/c_200000/205956/format241403.f4v?sen=ttt+-+titel+thesen+temperamente&amp;for=Web-S&amp;clip=Klaus+Kinski+-+Pionier+der+Selbstvermarktung&amp;mediathek=ardmediathek");
						mediaCollection.addMediaStream(0, 1, "rtmp://vod.daserste.de/ardfs/", "mp4:videoportal/mediathek/ttt+-+titel+thesen+temperamente/c_200000/205956/format241402.f4v?sen=ttt+-+titel+thesen+temperamente&amp;for=Web-M&amp;clip=Klaus+Kinski+-+Pionier+der+Selbstvermarktung&amp;mediathek=ardmediathek");
						mediaCollection.addMediaStream(0, 2, "rtmp://vod.daserste.de/ardfs/", "mp4:videoportal/mediathek/ttt+-+titel+thesen+temperamente/c_200000/205956/format241418.f4v?sen=ttt+-+titel+thesen+temperamente&amp;for=Web-L&amp;clip=Klaus+Kinski+-+Pionier+der+Selbstvermarktung&amp;mediathek=ardmediathek");
						

                        playerConfiguration = new PlayerConfiguration();
                        // playerConfiguration.setRepresentation(quality, width, height, inLayer, scale)
                        
                            // video
                            playerConfiguration.setRepresentation(0, 512, 288, false, true);
                            playerConfiguration.setRepresentation(1, 512, 288, false, true);
                            playerConfiguration.setRepresentation(2, 960, 544, true, true);
                            playerConfiguration.setRepresentation(3, 1280, 720, true, true);
                        

                        playerConfiguration.setShowToobarQualNavButtons(false);

                        player = new Player("player-8619708", playerConfiguration, mediaCollection);
						player.init();
                       if($jPlayer(document).getUrlParam("currentTimeCode")!= null){
                        var vm = new ViteMessage(player, playerConfiguration, mediaCollection, $jPlayer(document).getUrlParam("currentTimeCode"));
                    }

					});
			</script>
			<div id="player-8619708"></div>
		</div>
      		<div class="mt-player-content_wrapper">
        		<div class="mt-player_content">
  • In Zeile 21 steht die Roh-Streamadresse des Large-Streams (da drüber stehen die in Middle- und Small-Qualität): "rtmp://vod.daserste.de/ardfs/", "mp4:videoportal/mediathek/ttt+-+titel+thesen+temperamente/c_200000/205956/format241418.f4v?sen=ttt+-+titel+thesen+temperamente&amp;for=Web-L&amp;clip=Klaus+Kinski+-+Pionier+der+Selbstvermarktung&amp;mediathek=ardmediathek".

  • Aus dieser entfernt man die Zeichenfolge ", " und verschiebt das mp4: um eine Ebene nach rechts.

  • Dann hat man die fertige Streamadresse: "rtmp://vod.daserste.de/ardfs/videoportal/mp4:mediathek/ttt+-+titel+thesen+temperamente/c_200000/205956/format241418.f4v?sen=ttt+-+titel+thesen+temperamente&amp;for=Web-L&amp;clip=Klaus+Kinski+-+Pionier+der+Selbstvermarktung&amp;mediathek=ardmediathek" .

  • Nun ruft man ein Terminal [3] auf und gibt die Streaming-Adresse sowie den Dateipfad zum Speichern in folgender Reihenfolge an:

    rtmpdump -r "rtmp://vod.daserste.de/ardfs/videoportal/mp4:mediathek/ttt+-+titel+thesen+temperamente/c_200000/205956/format241418.f4v?sen=ttt+-+titel+thesen+temperamente&amp;for=Web-L&amp;clip=Klaus+Kinski+-+Pionier+der+Selbstvermarktung&amp;mediathek=ardmediathek" -o "$HOME/Videos/Klaus+Kinski+-+Pionier+der+Selbstvermarktung.mp4" -V 

Hinweis:

  • Die Option -V bzw. --verbose ist nicht unbedingt nötig. Sie kann aber bei Misslingen des Ladevorgangs Hinweise auf die Fehler-Quellen geben.

  • Die Option -e bzw. --resume ist ebenfalls nicht unbedingt nötig. Sie sorgt aber ggf. für den Ladevorgang in mehreren Teilen. In diesem Beispiel führt sie dazu, dass der Vorgang schon vor dem Starten abgebrochen wird.

3. Möglichkeit

Beispiel-Seite: http://mediathek.daserste.de/sendungen_a-z/1858312_satire-gipfel/12863662_nuhr-2012-der-jahresrueckblick?buchstabe=S

cURL installieren:

  • curl (universe - transfer a URL)

Befehl zum Installieren der Pakete:

sudo apt-get install curl 

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

folgendes "Bookmarklet" installieren (ein Lesezeichen erstellen mit folgendem JavaScript-Code als einzeilige Linkadresse)

javascript:(function(){s=document.getElementsByTagName('script'); t=''; for (i=0;i<s.length;++i){if (s[i].innerHTML.indexOf('mediaCollection.addMediaStream') !== -1) t=s[i].innerHTML; } p=/mediaCollection.addMediaStream.0, 2, "rtmp:..vod.daserste.de\/ardfs\/., .mp4:videoportal.mediathek.([^"]*).mp4/; m=p.exec(t); t=document.getElementsByClassName("boxTopHeadline")[0].innerHTML; r='curl rtmp://vod.daserste.de/ardfs/videoportal/mp4:mediathek/'+m[1]+'.mp4 -o "'+t+'.mp4"'; window.prompt ("Copy to clipboard: Ctrl+C, Enter", r); })();

Text im Popup in die Konsole kopieren und herunterladen.

Streaming-Videos des BR

  • Haupt-Seite: http://www.br.de/fernsehen/bayerisches-fernsehen/index.html

  • Beispiel-Seite: Beate Merk, Ganz schön verrückt - oder?

  • Diese Seite enthält im Quelltext die Beschreibung des Flash-Plugins. Darin enthalten ist ein Link zu einer xml-Datei (im original Quellcode Zeilen 315 ff.):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
<div class="detail_content">
<div class="box_large">
<div class="box_head"><!-- --></div>
<div class="teaser media_video contenttype_standard 130613-quer-thema-merk-100 embeddedMedia">
<span class="teaser_media">
<span class="av-playerContainer autostart notDownloadable">
<span id="av-player-7b0254e6-f063-4dbf-b47a-9e1deb3bf2cf">
<span class="errorFlash">
<span>Um Videos oder Audios abzuspielen, benötigen Sie den <a href="http://get.adobe.com/de/flashplayer/">aktuellen Flash Player</a> und aktiviertes JavaScript.</span>
</span>
<a onclick="return BRavFramework.register(BRavFramework('av-player-7b0254e6-f063-4dbf-b47a-9e1deb3bf2cf').setup({dataURL:'/fernsehen/bayerisches-fernsehen/sendungen/quer/130613-quer-thema-merk-100~meta_xsl-avtransform100_-daa09e70fbea65acdb1929dadbd4fc6cdb955b63.xml'}));">
<img width="512" height="288" alt="Christoph Süß | Bild: Bayerischer Rundfunk" title="Christoph Süß | Bild: Bayerischer Rundfunk" src="/fernsehen/bayerisches-fernsehen/sendungen/quer/130613-quer-thema-merk-bild-100~_v-image512_-6a0b0d9618fb94fd9ee05a84a1099a13ec9d3321.jpg?version=1371161801481"/>
</a>

Der Link findet sich in der vorletzten Zeile nach dataURL:. Diesem Anteil stellt man das Präfix www.br.de vor und öffnet den Link oder lädt die Datei mit wget. (Im Beispiel lautet der vollständige Link: www.br.de/fernsehen/bayerisches-fernsehen/sendungen/quer/130613-quer-thema-merk-100~meta_xsl-avtransform100_-daa09e70fbea65acdb1929dadbd4fc6cdb955b63.xml.) Diese Datei enthält Zeilen der Art:

<?xml version="1.0" encoding="UTF-8"?>
<playlrtmp://gffstream.fcod.llnwd.net/a792/e2/mediendb/quarks/video/2012/0313/120312_sendung_neu_web-m.mp4type}));ist title="" startIndex="0" preview="false">
<video popoutURL="http://www.br.de/fernsehen/bayerisches-fernsehen/sendungen/quer/130613-quer-thema-merk-100~popup.html" commentable="false" downloadable="false" externalId="4c1431bb-a716-4a8a-b5a7-47245cdd5256">
...
<assets>
<asset type="MOBILES">
<serverPrefix>rtmp://cdn-vod-fc.br.de/a4330/e2/</serverPrefix>
<fileName>mp4:mir-live/MUJIuUOVBwQIb71S/uXOHb7Z1iwOD/_2rc_H1S/_-TS/_246_2vc/4c1431bb-a716-4a8a-b5a7-47245cdd5256_0.mp4</fileName>
...
<asset type="MOBILE">
<serverPrefix>rtmp://cdn-vod-fc.br.de/a4330/e2/</serverPrefix>
<fileName>mp4:mir-live/MUJIuUOVBwQIb71S/uXOHb7Z1iwOD/_2rc_H1S/_-TS/_246_2vc/4c1431bb-a716-4a8a-b5a7-47245cdd5256_A.mp4</fileName>
...
<asset type="STANDARD">
<serverPrefix>rtmp://cdn-vod-fc.br.de/a4330/e2/</serverPrefix>
<fileName>mp4:mir-live/MUJIuUOVBwQIb71S/uXOHb7Z1iwOD/_2rc_H1S/_-TS/_246_2vc/4c1431bb-a716-4a8a-b5a7-47245cdd5256_B.mp4</fileName>
...
<asset type="PREMIUM">
<serverPrefix>rtmp://cdn-vod-fc.br.de/a4330/e2/</serverPrefix>
<fileName>mp4:mir-live/MUJIuUOVBwQIb71S/uXOHb7Z1iwOD/_2rc_H1S/_-TS/_246_2vc/4c1431bb-a716-4a8a-b5a7-47245cdd5256_C.mp4</fileName>
...

... von der gewünschten Qualität kann man sich nun aus dem Präfix rtmp://cdn-vod-fc.br.de/a4330/e2/ und dem Dateinamen eine Streaming-Adresse der .mp4-Datei zusammensetzen. Nun ruft man ein Terminal[3] auf und gibt die Streaming-Adresse sowie den Dateipfad zum Speichern in folgender Reihenfolge an:

rtmpdump -r "rtmp://cdn-vod-fc.br.de/a4330/e2/mp4:mir-live/MUJIuUOVBwQIb71S/uXOHb7Z1iwOD/_2rc_H1S/_-TS/_246_2vc/4c1431bb-a716-4a8a-b5a7-47245cdd5256_C.mp4" -o "$HOME/Beate.Merk.Ganz.schoen.verrueckt.mp4" -V 

Live-Stream des MDR

Die Live-Streams des MDR-Fernsehens findet man in der MDR-Mediathek, mit einer Auflösung von 512x288 Pixeln. Das Speichern der Live-Streams des MDR-Fernsehens wird mit einem Befehl über ein Terminal[3] ausgeführt. Die Befehlszeile lautet

  • bei MDR Sachsen

rtmpdump -r "rtmp://x4030mdrtvsacc22033.f.l.f.lb.core-cdn.net/22033mdr" -y "live/4030mdrtvsac/live_de_500" -o "$HOME/Videos/MDR-TV-Live-Stream_Sachsen.mp4" --live 
  • bei MDR Sachsen-Anhalt

rtmpdump -r "rtmp://x4031mdrtvsahc22033.f.l.f.lb.core-cdn.net/22033mdr" -y "live/4031mdrtvsah/live_de_500" -o "$HOME/Videos/MDR-TV-Live-Stream_Sachsen-Anhalt.mp4" --live 
  • bei MDR Thüringen

rtmpdump -r "rtmp://x4032mdrtvthuc22033.f.l.f.lb.core-cdn.net/22033mdr" -y "live/4032mdrtvthu/live_de_500" -o "$HOME/Videos/MDR-TV-Live-Stream_Thüringen.mp4" --live 

Die Option -o übergibt dabei den Dateipfad zum Speichern der Live-Streams des MDR-Fernsehens.

Hinweis:

Weitere URLs zu den Live-Streams des MDR-Fernsehens sind im Artikel Internet-TV/Stationen.

Streaming-Videos des WDR

Als Beispiel soll die Webseite der Sendung Quarks & Co dienen. Obwohl hier ein Video zum Herunterladen angeboten wird, so ist die Qualität der mitgeschnittenen Streaming-Datei deutlich besser bzw. macht beim Abspielen deutlich weniger Probleme.

  • Quelltext der Sendung vom 2012-03-15

  • Im Quelltext nach rtmp im Kombination mit mp4 suchen

  • Die Streaming-Adresse

    rtmp://gffstream.fcod.llnwd.net/a792/e2/mediendb/quarks/video/2012/0313/120312_sendung_neu_web-m.mp4

    extrahiert man aus der Zeile 388: <a href="?startArchiv=1&amp;tab=archiv&amp;startPicture=/bilder/mediendb/quarks/Bilder/2012/0313/120312_ganze_sendung.jpg&amp;dslSrc=rtmp://gffstream.fcod.llnwd.net/a792/e2/mediendb/quarks/video/2012/0313/120312_sendung_neu_web-m.mp4&amp;overlayPic=/tv/quarks/codebase/img/overlay_video.png&amp;offset=null&amp;red=fsstd-tv%2Fquarks&amp;base=/tv/quarks/codebase/video/&amp;isdnSrc=rtmp://gffstream.fcod.llnwd.net/a792/e2/mediendb/quarks/video/2012/0313/120312_sendung_neu_web-s.mp4">. Die Adresse für DSL streamt mit höherer Qualität als die Adresse für ISDN.

  • Einfacher geht es mit einem Rechtsklick rechte Maustaste über dem Video-Banner und dann Linksklick linke Maustaste auf "Link-Adresse kopieren".

  • Nun ruft man ein Terminal[3] auf und gibt die Streaming-Adresse sowie den Dateipfad zum Speichern in folgender Reihenfolge an:

    rtmpdump -r "rtmp://gffstream.fcod.llnwd.net/a792/e2/mediendb/quarks/video/2012/0313/120312_sendung_neu_web-m.mp4" -o $HOME/Videos/quarks_video_2012_0313_120312_sendung_neu_web-m.mp4 --resume -V 

Hinweis:

  • Die Option -V bzw. --verbose ist nicht unbedingt nötig. Sie kann aber bei Misslingen des Ladevorgangs Hinweise auf die Fehler-Quellen geben.

  • Die Option -e bzw. --resume ist ebenfalls nicht unbedingt nötig. Sie sorgt aber ggf. für den Ladevorgang in mehreren Teilen. Falls dieser misslingt, könnte aber genau diese Option daran schuld sein.

Die Mediatheken von ZDF und 3sat

Die beiden Sender ZDF 🇩🇪 und 3sat 🇩🇪 nutzen für ihre jeweiligen Mediatheken ZDF-Mediathek 🇩🇪 bzw. 3sat-Mediathek 🇩🇪 die selbe Infrastruktur.

  • Diese Infrasturkur nutzt einen Webservice mit der URL http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?id=??????? bzw. http://www.3sat.de/mediathek/xmlservice/web/beitragsDetails?id=?????. Dieser XML-Webservice kann aber auch direkt vom Anwender in Anspruch genommen werden.

  • Gibt man im Browser die URL http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?id=BEITRAGSID bzw. http://www.3sat.de/mediathek/xmlservice/web/beitragsDetails?id=BEITRAGSID ein, so erhält man das oben erwähnte XML-Dokument.

  • Die Beitrags-ID erhält man über die normale ZDF- bzw. 3sat-Mediathek. Sie wird in der URL eines Beitrags angegeben. Wenn z.B. die volle URL http://www.zdf.de/ZDFmediathek/hauptnavigation/startseite/#/beitrag/video/1639964/Checkliste:-Urlaubsrechte-und-Pflichten Checkliste: Urlaubsrechte und -Pflichten lautet, dann ist 1639964 die gesuchte Beitrags-ID.

  • Diese überträgt man nun als Parameter id in die URL: http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?id=1639964.

  • Nun hat man das oben erwähnte XML-Dokument und kann sich den gewünschte Stream heraussuchen. Allerdings führen die direkt sichtbaren Download- bzw. Streaming-URLs meistens zu Videos mit einer maximalen Auflösung von 852x480 Pixeln.

  • Um, falls vorhanden, zu noch höheren Auflösungen zu gelangen, nehmen wir als Beispiel den Film "Der Schlüssel zum Tod". In der zum Film gehörigen xmlservice-Datei findet man u.a. den als veryhigh eingestuften Link http://nrodl.zdf.de/none/zdf/13/06/130627_schluessel_rhc_1456k_p13v11.mp4. Der zugehörige Film hat eine Auflösung von 852x480 (SAR 1:1) bei 1400 kb/s. Auf den ersten Blick ist das die beste angebotene Auflösung. Ein weiteres Stöbern in der zum Film gehörigen xmlservice-Datei fördert jedoch die .f4m-Datei http://fstreaming.zdf.de/zdf/300/13/06/130627_schluessel_rhc.f4m zu Tage, in der weitere Auflösungen angegeben werden:

curl http://fstreaming.zdf.de/zdf/300/13/06/130627_schluessel_rhc.f4m 

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<manifest xmlns="http://ns.adobe.com/f4m/2.0">
<baseURL>http://zdf_hdflash_none-f.akamaihd.net/z/</baseURL>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_124k_p6v11.mp4/manifest.f4m?hdcore" bitrate="68000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_1456k_p13v11.mp4/manifest.f4m?hdcore" bitrate="1400000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_189k_p7v11.mp4/manifest.f4m?hdcore" bitrate="133000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_436k_p9v11.mp4/manifest.f4m?hdcore" bitrate="380000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_606k_p10v11.mp4/manifest.f4m?hdcore" bitrate="550000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_2256k_p14v11.mp4/manifest.f4m?hdcore" bitrate="2200000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_1056k_p12v11.mp4/manifest.f4m?hdcore" bitrate="1000000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_736k_p11v11.mp4/manifest.f4m?hdcore" bitrate="680000"/>
<media href="mp4/none/zdf/13/06/130627_schluessel_rhc_242k_p8v11.mp4/manifest.f4m?hdcore" bitrate="186000"/>
</manifest>

  • Über die höchste Bitrate finden wir die Auflösung 2256k_p14v11, welche den neuen Link http://rodl.zdf.de/none/zdf/13/06/130627_schluessel_rhc_2256k_p14v11.mp4 ergibt. Dieser Film hat eine Auflösung von 1024x576 (SAR 1:1) bei 2200 kb/s.

  • Allerdings steht eine solche .f4m-Datei nicht bei allen Beiträgen zur Verfügung. In diesen Fällen lohnt es, sich in gleicher Manier die .smil-Dateien anzusehen und notfalls auch solche mit der Endung .meta.

    • Diese enthalten die für das Herunterladen benötigten Angaben, mit deren Hilfe eine passende http-Url konstruiert werden kann.

    • Wenn HD vorhanden: Ggf. Url aus veryhigh nehmen und vh durch hd ersetzen (⇒ veryhigh=vh, HD=hd).

    • Im Titanic-Film in HD (http://www.zdf.de/ZDFmediathek/#/beitrag/video/1607184/Titanic:-100-Jahre-nach-der-Katastrophe, ZDF XML Service Url http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?id=1607184) könnte so aus dem Playpath mp4:zdf/12/03/120328_titanic_jfajdfkl_tex_hd.mp4 und dem Anfang der Basis-Url http://rodl.zdf.de/none/zdf/ [Vorsicht, ist über die Filme hinweg nicht konstant!] die HD-Url http://rodl.zdf.de/none/zdf/12/03/120328_titanic_jfajdfkl_tex_hd.mp4 zusammengesetzt werden.

    • Der http-Link für die HD-Version würde sich auch aus der Flash-Version für HD und dem http-Link für HQ (veryhigh) rekonstruieren lassen (anderes Beispiel):

      • Flash-HD: rtmp://cp125301.edgefcs.net/ondemand/mp4:zdf/13/06/130602_dvo3_land_lkjkj_tex_3056k_p15v9.mp4

      • und http-HQ: http://rodl.zdf.de/none/zdf/13/06/130602_dvo3_land_lkjkj_tex_1596k_p13v9.mp4

      • wird zu http-HD: http://rodl.zdf.de/none/zdf/13/06/130602_dvo3_land_lkjkj_tex_3056k_p15v9.mp4

  • Nun kann man sich den gewünschten Stream mittels VLC, eines "Download PlugIn" für den Browser (z.B. Video Download Helper für Firefox oder FVD für Opera) oder wie gehabt auch mittels eines separaten Download-Managers herunterladen.

  • Auflösungs-Kürzel, ggf. mit weiteren Angaben:

(f4m-Datei:)

124k_p6v11.mp4
189k_p7v11.mp4
242k_p8v11.mp4
436k_p9v11.mp4
606k_p10v11.mp4
736k_p11v11.mp4
1056k_p12v11.mp4
1456k_p13v11.mp4
2256k_p14v11.mp4


3056k_p15v9.mp4


928k_p34v11.mp4</url><ratio>4:3</ratio><height>576</height><width>720</width>
2328k_p35v11.mp4</url><ratio>4:3</ratio><height>576</height><width>720</width>


124k_p2v11.3gp</url><ratio>16:9</ratio><height>136</height><width>240</width>
189k_p3v11.3gp</url><ratio>16:9</ratio><height>176</height><width>320</width>
242k_p4v11.3gp</url><ratio>16:9</ratio><height>176</height><width>320</width>
436k_p5v11.3gp</url><ratio>16:9</ratio><height>272</height><width>480</width>


189k_p7v11.mp4</url><ratio>16:9</ratio><height>176</height><width>320</width>
436k_p9v11.mp4</url><ratio>16:9</ratio><height>272</height><width>480</width>

1456k_p13v11.mp4</url><ratio>16:9</ratio><height>480</height><width>852</width>
2256k_p14v11.mp4</url><ratio>16:9</ratio><height>576</height><width>1024</width>

1596k_p13v9.mp4</url><ratio>16:9</ratio><height>480</height><width>852</width>
3056k_p15v9.mp4</url><ratio>16:9</ratio><height>720</height><width>1280</width>


vh.mp4
hd.mp4


282k_p16v11.webm</url><ratio>16:9</ratio><height>176</height><width>320</width>
776k_p17v11.webm</url><ratio>16:9</ratio><height>360</height><width>640</width>
1496k_p18v11.webm</url><ratio>16:9</ratio><height>480</height><width>852</width>

  • URLs zu den Mediaplayer-Konfigurations-XML-Dateien: ZDF 🇩🇪, 3sat 🇩🇪

Streaming-Videos von der ZDF-Mediathek laden

In der ZDF-Mediathek 🇩🇪 liegt ein täglich aktualisiertes Repertoire an Sendungen und Kurzbeiträgen. Um es herunterzuladen gibt es – je nachdem welche der beiden Versionen der Mediathek man wählt – zwei Möglichkeiten:

  1. HTML-Version 🇩🇪: Herunterladen mit MPlayer: Man ruft einfach den gewünschten Beitrag auf und findet dann unten auf der Seite zwei Formate zur Auswahl. Mit einem Rechtsklick über "Windows Media Player / DSL 2000 → Abspielen" kopiert man die Streaming-Adresse *.asx in die Zwischenablage. Anschließend ruft man ein Terminal auf und gibt die Streaming-Adresse sowie den Dateipfad zum Speichern in folgender Reihenfolge an:

    mplayer -playlist Streaming-Adresse.asx -dumpstream -dumpfile Dateipfad.wmv 
  2. Flash-Version 🇩🇪: Hier sind die Videos qualitativ noch etwas hochwertiger und liegen außerdem u.a. im .mp4-Format vor. Man benötigt die Firefox-Erweiterung Adblock Plus, hierbei im FF unter "Ansicht" auf "Adblock Plus: Elemente der geöffneten Seite" klicken.

    1. Beispiel-Seite: Checkliste: Urlaubsrechte und -Pflichten 🇩🇪

    2. Die Seite muss so weit geladen sein, dass das Video abgespielt wird.

    3. Unten im Adblock Plus-Fenster ist u.a. auch die Objekt-Anfrage-URL http://www.zdf.de/ZDFmediathek/xmlservice/web/beitragsDetails?id=1639964&ak=web aufgeführt.

    4. Durch einen Mittelklick mittlere Maustaste hierauf öffnet man diese URL nun in einem neuen Browser-Tab.

    5. Ausschnitt aus dem angezeigten XML-Code, ziemlich unten:

        1
        2
        3
        4
        5
        6
        7
        8
        9
       10
       11
       12
       13
       14
       15
       16
       17
       18
       19
       20
       21
       22
       23
       24
       25
       26
       27
       28
       29
       30
       31
       32
       33
       34
       35
       36
       37
       38
       39
       40
       41
       42
       43
       44
       45
       46
       47
       48
       49
       50
       51
       52
       53
       54
       55
       56
       57
       58
       59
       60
       61
       62
       63
       64
       65
       66
       67
       68
       69
       70
       71
       72
       73
       74
       75
       76
       77
       78
       79
       80
       81
       82
       83
       84
       85
       86
       87
       88
       89
       90
       91
       92
       93
       94
       95
       96
       97
       98
       99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      114
      115
      116
      117
      118
      119
      120
      121
      122
      123
      124
      125
      126
      127
      128
      <formitaet basetype="h264_aac_mp4_http_na_na" isDownload="false">
      <quality>high</quality><url>
      http://rodl.zdf.de/none/zdf/12/05/120514_tipp2_wis_h.mp4
      </url>
      <ratio>16:9</ratio>
      <height>240</height>
      <width>432</width>
      <videoBitrate>480000</videoBitrate>
      <audioBitrate>56000</audioBitrate>
      <filesize>4043432</filesize><facets>
      <facet>restriction_useragent</facet>
      </facets>
      </formitaet><formitaet basetype="h264_aac_mp4_http_na_na" isDownload="false">
      <quality>veryhigh</quality><url>
      http://rodl.zdf.de/none/zdf/12/05/120514_tipp2_wis_vh.mp4
      </url>
      <ratio>16:9</ratio>
      <height>480</height>
      <width>852</width>
      <videoBitrate>1500000</videoBitrate>
      <audioBitrate>96000</audioBitrate>
      <filesize>11884937</filesize><facets>
      <facet>restriction_useragent</facet>
      </facets>
      </formitaet><formitaet basetype="h264_aac_3gp_http_na_na" isDownload="false">
      <quality>low</quality><url>
      http://rodl.zdf.de/none/zdf/12/05/120514_tipp2_wis_m4l.3gp
      </url>
      <ratio>16:9</ratio>
      <height>136</height>
      <width>240</width>
      <videoBitrate>68000</videoBitrate>
      <audioBitrate>56000</audioBitrate>
      <filesize>1086006</filesize><facets>
      <facet>restriction_useragent</facet>
      </facets>
      </formitaet><formitaet basetype="h264_aac_3gp_http_na_na" isDownload="false">
      <quality>med</quality><url>
      http://rodl.zdf.de/none/zdf/12/05/120514_tipp2_wis_m4m.3gp
      </url>
      <ratio>16:9</ratio>
      <height>176</height>
      <width>320</width>
      <videoBitrate>133000</videoBitrate>
      <audioBitrate>56000</audioBitrate>
      <filesize>1560409</filesize><facets>
      <facet>restriction_useragent</facet>
      </facets>
      </formitaet><formitaet basetype="h264_aac_3gp_http_na_na" isDownload="false">
      <quality>high</quality><url>
      http://rodl.zdf.de/none/zdf/12/05/120514_tipp2_wis_m4h.3gp
      </url>
      <ratio>16:9</ratio>
      <height>176</height>
      <width>320</width>
      <videoBitrate>186000</videoBitrate>
      <audioBitrate>56000</audioBitrate>
      <filesize>1941371</filesize><facets>
      <facet>restriction_useragent</facet>
      </facets>
      </formitaet><formitaet basetype="h264_aac_3gp_http_na_na" isDownload="false">
      <quality>veryhigh</quality><url>
      http://rodl.zdf.de/none/zdf/12/05/120514_tipp2_wis_m4vh.3gp
      </url>
      <ratio>16:9</ratio>
      <height>272</height>
      <width>480</width>
      <videoBitrate>380000</videoBitrate>
      <audioBitrate>56000</audioBitrate>
      <filesize>3366903</filesize><facets>
      <facet>restriction_useragent</facet>
      </facets>
      </formitaet><formitaet basetype="wmv3_wma9_asf_mms_asx_http" isDownload="false">
      <quality>veryhigh</quality><url>
      http://wstreaming.zdf.de/zdf/veryhigh/120514_tipp2_wis.asx
      </url>
      <ratio>16:9</ratio>
      <height>384</height>
      <width>688</width>
      <videoBitrate>1400000</videoBitrate>
      <audioBitrate>192000</audioBitrate>
      <filesize>10268831</filesize>
      </formitaet>
      </formitaeten>
      <embed>false</embed>
      <socialBookmarks>true</socialBookmarks>
      <copyright/>
      </video>
      </response>
      

      Dort steht in Zeile 24 die gewünschte Download-URL http://rodl.zdf.de/none/zdf/12/05/120514_tipp2_wis_vh.mp4. Diese gibt man nun in einen Download-Manager ein und lädt damit die qualitativ hochwertige .mp4-Datei herunter.

Streaming-Videos der 3sat-Mediathek

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<script type="text/javascript">
var swfVersionStr = "10.1.0";
var xiSwfUrlStr = "/mediaplayer/3/playerProductInstall.swf";
var params = {};
params.quality = "high";
params.bgcolor = "#f2f2f2";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
var playerBottomFlashvars = {};
playerBottomFlashvars.showPreloader= true;
playerBottomFlashvars.barColor= 0x6E0F25;
playerBottomFlashvars.barBorderColor = 0xFFFFFF;
playerBottomFlashvars.barWidth= 720;
playerBottomFlashvars.barHeight= 15;
playerBottomFlashvars.configuration = "/mediaplayer/3/configuration_player3.xml";
<!--assets/-->
playerBottomFlashvars.article = "true";
playerBottomFlashvars.tracking = "false";
playerBottomFlashvars.title = "";
playerBottomFlashvars.details = "";
playerBottomFlashvars.channelTitle = "3sat";
playerBottomFlashvars.hasCaption = "false";
playerBottomFlashvars.mediaURL = "http://fstreaming.zdf.de/3sat/veryhigh/120405_raetselhafte_mimik_wido.smil";
playerBottomFlashvars.CaptionURL="";
playerBottomFlashvars.assetID="";
playerBottomFlashvars.channelID="";
playerBottomFlashvars.CaptionOffset=0;
playerBottomFlashvars.airTime="";
playerBottomFlashvars.expiryDate="";
playerBottomFlashvars.vcmsURL="";
var playerBottomAttributes = {};
playerBottomAttributes.id = "EmbeddedPlayerBottom";
playerBottomAttributes.name = "EmbeddedPlayerBottom";
playerBottomAttributes.align = "middle";
swfobject.embedSWF(
"/mediaplayer/3/EmbeddedPlayer.swf", "flashContentTop",
"726", "405",
swfVersionStr, xiSwfUrlStr,
playerBottomFlashvars, params, playerBottomAttributes,
swfCreationCompleteHandler);
swfobject.createCSS("#flashContentTop", "display:block;text-align:left;");
</script>

Dort steht in Zeile 23 die playerBottomFlashvars.mediaURL = "http://fstreaming.zdf.de/3sat/veryhigh/120405_raetselhafte_mimik_wido.smil", diese mit einem Download-Manager herunterladen, sie dann mit einem Text-Editor öffnen:

<?xml version="1.1"?>
<smil baseProfile="Language" version="3.0" xmlns="http://zdf.de/ns/zdfsmil">
    <head>
        <meta content="SMuBl Core 3.4 Cienfuegos" name="creator"/>
        <meta content="2012-03-16T14:36:50" name="date"/>
        <meta content="vod" name="type"/>
        <meta content="1.0" name="version" />
        <paramGroup xml:id="gl-vod-rtmp">
            <param name="app" value="ondemand" />
            <param name="cdnclass" value="default" />
            <param name="cdnlabel" value="akamai" />
            <param name="host" value="cp125301.edgefcs.net" />
            <param name="protocols" value="rtmp,rtmpt" />
            <param name="subscribe" value="false" />
            <param name="type" value="stream" />
        </paramGroup>
    </head>
    <body>
        <switch>
            <switch>
                <excl>
                    <video dur="00:43:04" paramGroup="gl-vod-rtmp" src="mp4:3sat/12/04/120405_raetselhafte_mimik_wido_l.mp4" system-bitrate="62000">
                        <param name="quality" value="low" />
                    </video>
                    <video dur="00:43:04" paramGroup="gl-vod-rtmp" src="mp4:3sat/12/04/120405_raetselhafte_mimik_wido_h.mp4" system-bitrate="700000">
                        <param name="quality" value="high" />
                    </video>
                    <video dur="00:43:04" paramGroup="gl-vod-rtmp" src="mp4:3sat/12/04/120405_raetselhafte_mimik_wido_vh.mp4" system-bitrate="1700000">
                        <param name="quality" value="veryhigh" />
                    </video>
                </excl>
            </switch>
        </switch>
    </body>
</smil>

...und sich dann aus den darin enthaltenen Parametern die rtmp://-Streaming-Adresse der .mp4-Datei zusammensetzen. Nun ruft man ein Terminal[3] auf und gibt die Streaming-Adresse sowie den Dateipfad zum Speichern in folgender Reihenfolge an:

rtmpdump -r "rtmp://cp125301.edgefcs.net/ondemand/3sat/12/04/120405_raetselhafte_mimik_wido_vh.mp4" -o $HOME/Videos/120405_raetselhafte_mimik_wido_vh.mp4 --resume -V 

Hinweis:

  • Die Option -V bzw. --verbose ist nicht unbedingt nötig. Sie kann aber bei Misslingen des Ladevorgangs Hinweise auf die Fehler-Quellen geben.

  • Die Option -e bzw. --resume ist ebenfalls nicht unbedingt nötig. Sie sorgt aber ggf. für den Ladevorgang in mehreren Teilen.

Streaming-Videos der ARTE-Mediathek (ARTE+7)

  • Haupt-Seite: videos.arte.tv 🇩🇪

  • Beispiel-Seite: http://videos.arte.tv/de/videos/albert_schweitzer-4225518.html

  • Eine Anleitung für Videos von der Homepage (http://www.arte.tv) kann dem nächsten Abschnitt entnommen werden.

  • Ausschnitt aus dem Quelltext, ziemlich unten:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
</dl>
</div>
</li>
</ul>
</div>
</div>
</div>
<script type="text/javascript">
/* <![CDATA[ */
videopageSettings = {
shareTrackingUrl: "/de/do_tracking/videos/albert_schweitzer-4225520,view,trackingPixel.gif?type=share"
};
var url_player = "http://videos.arte.tv/blob/web/i18n/view/player_18-3188338-data-4870353.swf";
var vars_player = {};
vars_player.videoId = "4225518";
vars_player.admin = "false";
vars_player.mode = "prod";
vars_player.embed = "false";
vars_player.autoPlay = "true";
vars_player.configFileUrl = "http://videos.arte.tv/cae/static/flash/player/config.xml";
vars_player.videorefFileUrl = "http://videos.arte.tv/de/do_delegate/videos/albert_schweitzer-4225518,view,asPlayerXml.xml";
vars_player.localizedPathUrl = "http://videos.arte.tv/cae/static/flash/player/";
vars_player.lang = "de";
initPlayer("");
/* ]]> */

</script>

Dort steht in Zeile 21 die vars_player.videorefFileUrl: http://videos.arte.tv/de/do_delegate/videos/albert_schweitzer-4225518,view,asPlayerXml.xml, diese im Browser aufrufen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<videoref id="4225518"><url>
http://videos.arte.tv/de/videos/albert_schweitzer-4225518.html
</url><videos>
<video lang="de" ref="http://videos.arte.tv/de/do_delegate/videos/albert_schweitzer-4225520,view,asPlayerXml.xml"/>
<video lang="fr" ref="http://videos.arte.tv/fr/do_delegate/videos/albert_schweitzer-4225568,view,asPlayerXml.xml"/>
</videos>
<subtitles>
</subtitles><services>
<service name="fullscreen" allow="true" allowEmbedded="true"/>
<service name="share" allow="true" allowEmbedded="true"/>
<service name="embed" allow="true" allowEmbedded="true"/>
<service name="info" allow="false" allowEmbedded="true"/>
</services><embed>
<disallow>defrancisation.com</disallow>
</embed>
</videoref>

Dort steht in Zeile 9: <video lang="de" ref="http://videos.arte.tv/de/do_delegate/videos/albert_schweitzer-4225520,view,asPlayerXml.xml"/>, auch diese URL im Browser aufrufen:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
<video id="4225520" lang="de" playerLogo="ON">
<name>Albert Schweitzer</name><url>
http://videos.arte.tv/de/videos/albert_schweitzer-4225518.html
</url><firstThumbnailUrl>
http://videos.arte.tv/image/web/i18n/view/30_10_11_schweitzer_jpg_1-4230702-imageData-4967649,h,406,w,720.jpg
</firstThumbnailUrl>
<dateExpiration>Sun, 6 Nov 2011 20:15:24 +0100</dateExpiration>
<dateVideo>Sun, 30 Oct 2011 20:15:24 +0100</dateVideo>
<numberOfViews>341</numberOfViews>
<rating>0.0</rating><urls><url quality="hd">
rtmp://artestras.fcod.llnwd.net/a3903/o35/mp4:geo/videothek/default/arteprod/A7_SGT_ENC_04_037657-000-A_PG_HQ_DE?h=74bf9901874e33a7e584ce88824427b2
</url><url quality="sd">
rtmp://artestras.fcod.llnwd.net/a3903/o35/mp4:geo/videothek/default/arteprod/A7_SGT_ENC_02_037657-000-A_PG_MQ_DE?h=6fc967a9c67623e386cb9db9bf5c0fe7
</url>
</urls><postrolls><video id="4210016">
<name>Albert Schweitzer (Ausschnitt)</name><url>
http://videos.arte.tv/de/videos/albert_schweitzer_ausschnitt_-4233762.html
</url><firstThumbnailUrl>
http://videos.arte.tv/image/web/i18n/view/1030_schweitzer_07_jpg_2-4194804-imageData-4959922,h,169,w,300.jpg
</firstThumbnailUrl>
<dateExpiration>Sat, 5 Nov 2011 00:00:00 +0100</dateExpiration>
<dateVideo>Sun, 30 Oct 2011 20:15:00 +0100</dateVideo>
<numberOfViews>592</numberOfViews>
<rating>0.0</rating>
</video><video id="3795488">
<name>Festival: Anticodes 2011</name><url>
http://videos.arte.tv/de/videos/festival_anticodes_2011-3795486.html
</url><firstThumbnailUrl>
http://videos.arte.tv/image/web/i18n/view/Anticodes_2011_jpg_2-3791402-imageData-4863821,h,169,w,300.jpg
</firstThumbnailUrl>
<dateExpiration>Wed, 31 Oct 2012 00:46:33 +0100</dateExpiration>
<dateVideo>Fri, 25 Mar 2011 10:43:21 +0100</dateVideo>
<numberOfViews>406</numberOfViews>
<rating>5.0</rating>
</video><video id="3061260">
<name>Afrika: 50 Jahre Unabhängigkeit</name><url>
http://videos.arte.tv/de/videos/afrika_50_jahre_unabhaengigkeit-3207922.html
</url><firstThumbnailUrl>
http://videos.arte.tv/image/web/i18n/view/afrique_senegal_jpg_1-3058974-imageData-4709938,h,169,w,300.jpg
</firstThumbnailUrl>
<dateExpiration>Wed, 31 Oct 2012 00:46:11 +0100</dateExpiration>
<dateVideo>Mon, 1 Feb 2010 00:00:00 +0100</dateVideo>
<numberOfViews>1574</numberOfViews>
<rating>0.0</rating>
</video><video id="3225262">
<name>Togo: ein Mann und der Müll</name><url>
http://videos.arte.tv/de/videos/togo_ein_mann_und_der_muell-3228794.html
</url><firstThumbnailUrl>
http://videos.arte.tv/image/web/i18n/view/1505_togo_01_jpg_1-3213660-imageData-4728385,h,169,w,300.jpg
</firstThumbnailUrl>
<dateExpiration>Tue, 30 Oct 2012 23:51:03 +0100</dateExpiration>
<dateVideo>Sat, 15 May 2010 18:15:00 +0200</dateVideo>
<numberOfViews>2459</numberOfViews>
<rating>4.2</rating>
</video><video id="3115732">
<name>Im Gespräch mit Albert Maysles </name><url>
http://videos.arte.tv/de/videos/im_gespraech_mit_albert_maysles_-3122294.html
</url><firstThumbnailUrl>
http://videos.arte.tv/image/web/i18n/view/albert_itw_jpg_1-3115728-imageData-4718147,h,169,w,300.jpg
</firstThumbnailUrl>
<dateExpiration>Tue, 30 Oct 2012 22:29:00 +0100</dateExpiration>
<dateVideo>Mon, 22 Mar 2010 00:00:00 +0100</dateVideo>
<numberOfViews>252</numberOfViews>
<rating>0.0</rating>
</video>
</postrolls>
<duration>6550</duration>
<tracking url="http://videos.arte.tv/de/do_tracking/videos/albert_schweitzer-4225520,view,trackingPixel.gif?type=views"/>
<trackingReferer url="http://videos.arte.tv/de/do_tracking/videos/albert_schweitzer-4225520,view,trackingPixel.gif?referer=REFERER_URL&type=views"/><eStats>
<video_name>albert_schweitzer_4225520</video_name>
<video_section1>de</video_section1>
<video_section2>601thema_dimanche</video_section2>
<video_section3>ARTE7</video_section3>
<video_section4>037657-000</video_section4>
<video_section5>30102011</video_section5>
<video_genre/>
</eStats><xitiRichMediaTag>
RENDERING_PLACE::601thema_dimanche::4225520albert_schweitzer_DE
</xitiRichMediaTag>
</video>

Dort steht in den Zeilen 19 und 20 die <url quality="hd">. Nun ruft man ein Terminal[3] auf und gibt die Streaming-Adresse sowie den Dateipfad zum Speichern in folgender Reihenfolge an:

rtmpdump -r "rtmp://artestras.fcod.llnwd.net/a3903/o35/mp4:geo/videothek/default/arteprod/A7_SGT_ENC_04_037657-000-A_PG_HQ_DE?h=74bf9901874e33a7e584ce88824427b2" -o "$HOME/Videos/Albert_Schweitzer.mp4" --resume -V 

Hinweis:

  • Die Option -V bzw. --verbose ist nicht unbedingt nötig. Sie kann aber bei Misslingen des Ladevorgangs Hinweise auf die Fehler-Quellen geben.

  • Die Option -e bzw. --resume ist ebenfalls nicht unbedingt nötig. Sie sorgt aber ggf. für den Ladevorgang in mehreren Teilen.

Streaming-Videos der ARTE-Website (nicht ARTE+7)

  • Haupt-Seite: www.arte.tv 🇩🇪

  • Beispiel-Seite: http://www.arte.tv/guide/de/047158-000/zeitbombe-steuerflucht?autoplay=1

  • Ausschnitt aus dem Quelltext (einfach nach arte_vp_url suchen):

1
2
3
4
5
    <div class="video-container" 
         arte_vp_autostart="1" 
         arte_vp_config="arte_tvguide" 
         arte_vp_lang="de_DE"
         arte_vp_url="http://arte.tv/papi/tvguide/videos/stream/player/D/047158-000_PLUS7-D/ALL/ALL.json">

Dort steht die URL http://arte.tv/papi/tvguide/videos/stream/player/D/047158-000_PLUS7-D/ALL/ALL.json für die Player-Konfiguration, diese nun im Browser aufrufen (hier ein Ausschnitt):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"videoSearchParams": { "..." },
"videoJsonPlayer": {
   "...",
   "VSR": {
      "RTMP_SQ_1": {
       "quality": "HD - 720p",
       "width": 1280,
       "height": 720,
       "mediaType": "rtmp",
       "mimeType": "application/x-fcs",
       "bitrate": 2200,
       "streamer": "rtmp://artestras.fcod.llnwd.net/a3903/o35/",
       "url": "geo/videothek/EUR_DE_FR/tvguide/047158-000-A_SQ_1_VA-STA_00676750_MP4-2200_AMM-Tvguide.mp4?e=1379070213&h=ec01f60d07a7bf1f1f17bcb3212143f8",
       "videoFormat": "RMP4",
       "versionProg": "1",
       "versionCode": "VA-STA",
       "versionLibelle": "Dt. Version"
      },
      "... weitere Varianten ..."
   }
}
}

Nun die gewünschte Variante aussuchen (im Ausschnitt ist die beste Qualität zu sehen) und im Terminal[3] wie folgt herunterladen:

rtmpdump -r "rtmp://artestras.fcod.llnwd.net/a3903/o35/mp4:geo/videothek/EUR_DE_FR/tvguide/047158-000-A_SQ_1_VA-STA_00676750_MP4-2200_AMM-Tvguide.mp4?e=1379070213&h=ec01f60d07a7bf1f1f17bcb3212143f8" -o "zeitbombe-steuerflucht-arte-20130910.mp4" --resume -V 

Die RTMP-URL setzt sich also aus dem Feld "streamer", dem Text "mp4:" und dem Feld "URL" aus der Player-Konfiguration zusammen.

Deutschen ARTE-Live-Stream speichern

Das Speichern des deutschen ARTE live-Streams (mit einer Auflösung von 720x406) wird mit einem Befehl über ein Terminal[3] ausgeführt. Die Befehlszeile lautet:

rtmpdump -v -r "rtmp://artestras.fc.llnwd.net/artestras/s_artestras_scst_geoFRDE_de?s=1320220800&h=878865258ebb8eaa437b99c3c7598998" -o $HOME/Videos/ARTE-Live-Stream.mp4 

Die Option -o übergibt dabei den Dateipfad zum Speichern des deutschen ARTE-Live-Streams.

Deutsche Streams von ARTE Live Web speichern

Hinweis:

Siehe zum Ausprobieren bitte zunächst den Abschnitt ARTE Live Web im Artikel Internet-TV/Stationen.

Das Speichern der deutschen Streams von ARTE Live Web (mit einer Auflösung von 720x406 Pixeln) wird mit einem Befehl über ein Terminal[3] ausgeführt. Die Befehlszeile lautet:

rtmpdump -v -r "rtmp://arte.fc.llnwd.net/arte/alw-main-stream-X" -o $HOME/Videos/ARTE-Live-Web-Stream.mp4 

X ist dabei eine beliebige einstellige Ziffer, meist beginnend mit 1 (es könnten nämlich gleichzeitig mehrere Streams parallel übertragen werden).
Die Option -o übergibt dabei den Dateipfad zum Speichern des deutschen ARTE-Live-Web-Streams.

Hinweis:

Viele Streams von ARTE Live Web werden dort nach ihrer Ausstrahlung für eine gewisse Zeit archiviert. Dabei muss man dann allerdings zum Herunterladen ein eventuelles MP4: in der Streaming-URL verkleinern zu mp4:, sonst wird die Download-Anfrage abgewiesen! So wird etwa

rtmp://arte.fcod.llnwd.net/a2306/o25/MP4:liveweb/stream/6064_2013_12_07_arte_de_traviata_hd.mp4?e=1389049200&amp;h=981a700ebfa98bb09ac12f41f67a5db6

zu

rtmp://arte.fcod.llnwd.net/a2306/o25/mp4:liveweb/stream/6064_2013_12_07_arte_de_traviata_hd.mp4?e=1389049200&amp;h=981a700ebfa98bb09ac12f41f67a5db6

Problembehebung

In Flash eingebettete Videos speichern

Manche Internetseiten bieten ihre Videos nur eingebettet in Flash zum Anschauen an. Doch auch diese Videos können heruntergeladen werden. Bei der Benutzung von Firefox werden diese Videos, solange sie im Browser geöffnet sind, im Verzeichnis ~/.mozilla/firefox/PROFILNAME/Cache gespeichert, von wo sie einfach herauskopiert werden können. Nautilus markiert die Dateien dabei als Flash-Video und zeigt sogar eine Vorschau, vorausgesetzt der Codec ist installiert.

Seit der Adobe-Flashplayer-Version 10.2 ist das aber nicht mehr so leicht möglich. Eine Lösung findet sich im Artikel Versteckte Flashdateien speichern.

Intern

Extern

Diese Revision wurde am 2. Juni 2016 21:54 von noisefloor erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Übersicht, Streams sichern, Streaming