[[Vorlage(Archiviert, )]] {{{#!vorlage Wissen [:Pakete_installieren: Installation von Programmen] [:Terminal: Ein Terminal öffnen] [:sudo: Root-Rechte] }}} [[Inhaltsverzeichnis(4)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] Mithilfe des in [:PHP:] geschriebenen Skriptes '''AdobeHDS.php''' von [github:K-S-V:K-S-Vs GitHub-Seite] {en} können Multimedia-Streams im Format [wikipedia:HTTP-Streaming:HDS] (Adobe HTTP Dynamic Streaming) entweder aufgenommen oder – via [:Shell/Umleitungen/#Der-Pipe-Operator:Pipe-Operator] – an einen Mediaplayer weitergeleitet werden. Damit kann also das CPU-belastende [:Archiv/Adobe_Flash:Flash-Webbrowser-Plugin] umgangen werden. Dabei werden zunächst die einzelnen Fragment-Dateien heruntergeladen, in eine '''flv'''-Containerdatei kopiert (also ohne sie zu re-encodieren) und dabei nahtlos zusammengefügt. Anschließend werden die heruntergeladenen Fragmente gelöscht. Von dem Skript werden sowohl On-Demand-Streams als auch Live-Streams [:Streaming/#Streaming-Arten:verarbeitet]. Eine Alternative für AdobeHDS wäre z.B. das Programm [:Archiv/Livestreamer:]. Im Weitern wird das Skript als "KSV Adobe HDS Downloader" bezeichnet. = Installation = == Voraussetzungen == [:PHP:] sowie das [:cURL:]-Modul dazu muss auf dem System installiert sein {{{#!vorlage Paketinstallation php5-cli php5-curl }}} Ab [:Xenial:Ubuntu 16.04] heißen die benötigten Pakete '''php-cli''' und '''php-curl'''. == Skriptinstallation == KSV Adobe HDS Downloader ist nicht in den offiziellen Paketquellen enthalten. Zur Installation wird im [:Homeverzeichnis:] eine leere Datei namens '''AdobeHDS.php''' (z.B. in einem Ordner '''AdobeHDS-Skript''') erstellt und sich dorthinein von [github:K-S-V:K-S-V's GitHub-Seite] {en} das Skript [https://raw.githubusercontent.com/K-S-V/Scripts/master/AdobeHDS.php AdobeHDS.php] {en} kopiert. [[Vorlage(Fremd, Software)]] == Aktualisierung == Zum Aktualisieren des Skriptes eignet sich der Befehl [2] {{{#!vorlage befehl php AdobeHDS.php --update }}} = Benutzung = Die Benutzung des Skriptes erfolgt über die Kommandozeile. Die Befehle werden Verzeichnis des Skriptes '''AdobeHDS.php''' ausgeführt. Die allgemeine Syntax im Terminal [2] lautet: {{{#!vorlage Befehl php AdobeHDS.php [OPTION(EN)] "MANIFEST-URL" (--outdir PFAD/ZUM/ZIELORDNER --outfile ZIELDATEI) }}} Anstelle des Platzhalters `"MANIFEST-URL"` gibt man die Internet-Adresse ([wikipedia:Uniform_Resource_Locator:URL]) an, von der gelesen werden soll und optional den Dateinamen bzw. Pfad des Orts, in den der KSV Adobe HDS Downloader speichern soll. Es werden nur Adressen unterstützt, die die Zeichenkette '''manifest.f4m''' beinhalten. Gibt man statt des Pfads (z.B. '''~/Videos/''') nur einen Dateinamen oder nichts an, dann wird das Video standardmäßig im Skript-Verzeichnis gespeichert. == Optionen == Nachfolgend eine Übersicht der wichtigsten Optionen. Für eine vollständige Übersicht siehe `php AdobeHDS.php --help` [2]. Weitere Hilfe findet man in der [github:K-S-V/Scripts/wiki:offiziellen Anleitung zum Skript '''AdobeHDS.php'''] {en}. {{{#!vorlage Tabelle Optionen +++ Option Bedeutung +++ `--help` Hilfe anzeigen +++ `--debug` die [wikipedia:Debugger:Debug]-Ausgabe anzeigen +++ `--delete` die heruntergeladenen Fragmente nach dem Zusammengefügen der Containerdatei löschen (lediglich zum Download von On-Demand-Streams wirksam) +++ `--play` den heruntergeladenen Stream via [:Shell/Umleitungen/#Der-Pipe-Operator:Pipe-Operator] zu einem Mediaplayer streamen +++ `--update` das Skript auf die aktuelle [:Git:]-Version aktualisieren +++ `--duration SEKUNDEN` das Herunterladen bzw. Streamen nach der anzugebenen Anzahl an Sekunden beenden +++ `--manifest "MANIFEST-URL"` über die MANIFEST-URL die Datei zum Herunterladen der Fragmente angeben +++ `--outdir PFAD/ZUM/ZIELORDNER` den Pfad zum Zielordner der Zieldatei angeben, optional +++ `--outfile ZIELDATEI` den Namen der Zieldatei angeben, optional +++ `--quality QUALITÄTSGRAD` den Qualitätsgrad angeben: (`low|medium|high`) oder die exakte Bitrate, optional }}} {{{#!vorlage Warnung Der KSV Adobe HDS Downloader überschreibt ohne Rückfrage bereits bestehende gleichnamige Dateien. Im Zweifel also eine solche vor erneuten Downloads entweder umbenennen, in ein anderes Verzeichnis verschieben oder aber die `--outdir`- bzw. `--outfile`-Option verwenden, v.a. bei Live-Streams. }}} = Beispiele = Das Programm wählt standardmäßig automatisch die höchstmögliche Qualitätsstufe. Man stoppt den KSV Adobe HDS Downloader entweder, indem man das jeweilige Player-Fenster schließt oder im Terminal-Fenster mit der Tastenkombination [[Vorlage(Tasten, ctrl+c)]]. == Herunterladen == === On-Demand-Streams === Ein Download kann z.B. mithilfe dieser aus der [https://www.zdf.de ZDFmediathek] {de} stammenden, mittels [wikipedia:Netzwerkanalyse_(Informatik):Netzwerkanalyse] ermittelten `manifest.f4m`-URL eingeleitet werden: [2] ##Ein Download kann z.B. mithilfe dieser aus der [https://www.zdf.de ZDFmediathek] {de} stammenden, mittels [:Stream-Adressen_ermitteln/#Netzwerkanalyse:Netzwerkanalyse] ermittelten `manifest.f4m`-URL eingeleitet werden: [2] Netzwerkanalyse_(Informatik) {{{#!vorlage befehl php AdobeHDS.php --manifest "http://zdf_hdflash_none-f.akamaihd.net/z/meta-files/zdf/smil/f4m/300/16/08/160801_h19.smil/manifest.f4m" --delete }}} Ausgabe etwa: {{{ KSV Adobe HDS Downloader Processing manifest info.... Quality Selection: Available: 3267 2264 1460 607 436 188 Selected : 3267 Fragments Total: 198, First: 1, Start: 1, Parallel: 8 Downloading 198/198 fragments Found 198 fragments Finished }}} Es befindet sich jetzt die Datei namens '''1520d5f6d9679f9941ff2485d81f5824_3256000_c4d0e7ada8b13bad_Seg1-Frag.flv''' im Skript-Verzeichnis. Die heruntergeladenen einzelnen Fragment-Dateien sind mithilfe des `--delete`-Schalters gelöscht worden. Den `--delete`-Schalter kann man auch anders platzieren und erreicht dasselbe Ergebnis: {{{#!vorlage befehl php AdobeHDS.php --delete --manifest "http://zdf_hdflash_none-f.akamaihd.net/z/meta-files/zdf/smil/f4m/300/16/08/160801_h19.smil/manifest.f4m" }}} === Live-Streams === Als Live-Stream kann z.B. dieser von [https://www.3sat.de/ 3sat] {de} mittels via Netzwerkanalyse ermittelten `manifest.f4m`-URL heruntergeladen werden: [2] {{{#!vorlage befehl php AdobeHDS.php --manifest "http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" }}} Ausgabe: {{{ KSV Adobe HDS Downloader Processing manifest info.... Quality Selection: Available: 1456 1056 710 436 242 189 124 Selected : 1456 Fragments Total: 5914692, First: 5881319, Start: 5914691, Parallel: 8 ^Cdating bootstrap info, Retries: 2 }}} Man stoppt den KSV Adobe HDS Downloader mit der Tastenkombination [[Vorlage(Tasten, ctrl+c)]]. Es befindet sich jetzt die Datei namens '''80a8936523e9f452b76fb9512548eedb_1456_651d2d2e2d19cc11-p_Seg1-Frag.flv''' im Ziel-Verzeichnis. Der Download kann durch Verwenden der `--outdir`- bzw. `--outfile`-Optionen in ein anderes Verzeichnis gelenkt und/oder mit einen eigenen Dateinamen gespeichert werden: {{{#!vorlage Befehl php AdobeHDS.php --manifest "http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" --outdir /home/bert/Downloads --outfile Streaming-Datei.flv }}} Ausgabe in diesem Fall: {{{ KSV Adobe HDS Downloader Processing manifest info.... Quality Selection: Available: 1456 1056 710 436 242 189 124 Selected : 1456 Fragments Total: 5915252, First: 5881319, Start: 5915251, Parallel: 8 ^Cdating bootstrap info, Retries: 1 }}} Nach Abschluss befindet sich eine Datei '''Streaming-Datei.flv''' im Verzeichnis '''/home/bert/Downloads'''. == Streamen == === On-Demand-Streams === Als On-Demand-Stream kann z.B. dieser von [https://www.3sat.de/ 3sat] {de} mittels via Netzwerkanalyse ermittelten `manifest.f4m`-URL zum [:mpv:] gestreamt werden: [2] {{{#!vorlage befehl php AdobeHDS.php --manifest "http://zdf_hdflash_none-f.akamaihd.net/z/meta-files/3sat/smil/f4m/300/16/09/160914_salz_nano.smil/manifest.f4m?g=ZESMVNGCQAJA&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" --play | mpv --cache=2048 - }}} Dabei wird die Datei 2048 kBytes (2 MBytes) groß lokal gepuffert. Beispielausgabe: {{{ 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:26 / 00:02:02 (21%) A-V: -0.002 Dropped: 2 Cache: 10s+33MB Exiting... (Quit) }}} === Live-Streams === Als Live-Stream kann z.B. dieser von [https://www.3sat.de/ 3sat] {de} mittels via Netzwerkanalyse ermittelten `manifest.f4m`-URL zum [:VLC:] gestreamt werden: [2] {{{#!vorlage befehl php AdobeHDS.php --manifest "http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" --play | vlc --file-caching=10000 - }}} Dabei wird die Datei für 10 Sekunden (10.000 Millisekunden) lokal gepuffert. Ausgabe: {{{ VLC media player 2.1.6 Rincewind (revision 2.1.6-0-gea01d28) [0x1e37118] main libvlc: VLC wird mit dem Standard-Interface ausgeführt. Benutzen Sie 'cvlc', um VLC ohne Interface zu verwenden. [flv @ 0x7f22d4c1e200] max_analyze_duration reached [flv @ 0x7f22d4c1e200] Estimating duration from bitrate, this may be inaccurate Fontconfig warning: FcPattern object size does not accept value "0" Fontconfig warning: FcPattern object size does not accept value "0" Fontconfig warning: FcPattern object size does not accept value "0" Fontconfig warning: FcPattern object size does not accept value "0" [0x7f22b4001248] main vout display error: Failed to resize display [0x7f22b4001248] main vout display error: Failed to resize display }}} Die angezeigten Fehlermeldungen des VLC kann man ignorieren. Aufnahme des Stream mit dem [:MPlayer:]: {{{#!vorlage Befehl php AdobeHDS.php --manifest "http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" --play | mplayer -cache 2048 - }}} Dabei wird die Datei 2048 kBytes (2 MBytes) groß lokal gepuffert. Ausgabe: {{{ MPlayer2 2.0-701-gd4c5b7f-2ubuntu2 (C) 2000-2012 MPlayer Team Cannot open file '/home/oom/.mplayer/input.conf': No such file or directory Failed to open /home/oom/.mplayer/input.conf. Cannot open file '/etc/mplayer/input.conf': No such file or directory Failed to open /etc/mplayer/input.conf. Playing -. Reading from stdin... Cache size set to 2048 KiB Cache fill: 0.00% (0 bytes) Detected file format: FLV (Flash Video) (libavformat) [flv @ 0x7fc96d5d5600]max_analyze_duration reached [flv @ 0x7fc96d5d5600]Estimating duration from bitrate, this may be inaccurate [lavf] stream 0: video (h264), -vid 0 [lavf] stream 1: audio (aac), -aid 0 Load subtitles in . Cache not responding! Selected video codec: H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 [libavcodec] Selected audio codec: AAC (Advanced Audio Coding) [libavcodec] AUDIO: 48000 Hz, 2 ch, floatle, 0.0 kbit/0.00% (ratio: 0->384000) AO: [pulse] 48000Hz 2ch floatle (4 bytes per sample) Starting playback... VIDEO: 852x480 25.000 fps 0.0 kbps ( 0.0 kB/s) VO: [vdpau] 852x480 => 852x480 Planar YV12 [vdpau] Got display refresh rate 75.025 Hz. [vdpau] If that value looks wrong give the -vo vdpau:fps=X suboption manually. A: 5.8 V: 5.8 A-V: 0.000 ct: 0.000 0/ 0 2% 4% 1.0% 0 0 50% Exiting... (Quit) }}} Beispiel für [:mpv:]: {{{#!vorlage Befehl php AdobeHDS.php --manifest "http://zdf0910-lh.akamaihd.net/z/dach10_v1@392872/manifest.f4m?g=YHQVDNPFDXNU&hdcore=3.8.0&plugin=aasp-3.8.0.52.27" --play | mpv --cache=2048 - }}} Dabei wird die Datei ebenfalls 2048 kBytes (2 MBytes) groß lokal gepuffert. Ausgabe: {{{ 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 [ffmpeg/audio] aac: element type mismatch 1 != 0 (+) Video --vid=1 (h264) (+) Audio --aid=1 (aac) [ffmpeg/audio] aac: element type mismatch 1 != 0 AO: [pulse] 48000Hz stereo 2ch float [ffmpeg/audio] aac: element type mismatch 1 != 0 [ffmpeg/audio] aac: element type mismatch 1 != 0 VO: [opengl] 852x480 => 853x480 yuv420p AV: 00:00:26 A-V: 0.000 Cache: 8s+31KB Exiting... (Quit) }}} Um eine Anzeige der verfügbaren Qualitätsstufe zu erhalten, verwendet man die `--debug`-Option: Als Live-Stream kann z.B. dieser von [https://www.arte.tv/guide/de/live ARTE Live] {de} mittels via Netzwerkanalyse ermittelten `manifest.f4m`-URL zum [:mpv:] gestreamt werden: [2] {{{#!vorlage Befehl oom@oom-ms-7204:~/Programme/AdobeHDS-Skript$ php AdobeHDS.php --manifest "http://artelive-lh.akamaihd.net/z/artelive_de@393591/manifest.f4m?hdcore" --debug --play --duration 1 | mpv --cache=2048 - }}} Dabei wird die Datei ebenfalls 2048 kBytes (2 MBytes) groß lokal gepuffert sowie durch die `--duration`-Option nach ca einer Sekunde automatisch beendet. Im Folgenden kommt die gekürzte Ausgabe von KSV Adobe HDS Downloader und mpv gemischt: {{{#!code text Manifest Entries: Bitrate URL 2960 1_5d3c9e592ebde685-p_ 1628 2_5d3c9e592ebde685-p_ 928 3_5d3c9e592ebde685-p_ 578 4_5d3c9e592ebde685-p_ 296 5_5d3c9e592ebde685-p_ Updating bootstrap info, Available fragments: 0 Playing: - Segment Tables: Table 1: Number Fragments 1 9951 Fragment Tables: Table 1: Number Timestamp Duration Discontinuity 3068873 18413232000 6000 3069014 18414078000 5231 3069015 18414083231 0 3 3069020 18414114000 6000 3078823 18472932000 6000 Update complete, Available fragments: 3078823 Base Fragment Url: http://artelive-lh.akamaihd.net/z/artelive_de@393591/1_5d3c9e592ebde685-p_ Downloading Fragments: Adding fragment 3078822 to download queue [file] Reading from stdin... Fragment 3d19fff00de90bc39ee514277d777087_1_5d3c9e592ebde685-p__Seg1-Frag3078822 successfully downloaded Writing fragment 3078822 to flv file Fragment 3078822: Type CurrentTS PreviousTS Size Position Writing AVC sequence header VIDEO 0 -1 56 Writing AAC sequence header AUDIO 0 -1 4 VIDEO 0 0 79512 AUDIO 20 0 504 VIDEO 40 0 8192 AUDIO 41 20 537 AUDIO 63 41 470 VIDEO 80 40 13722 AUDIO 84 63 512 AUDIO 105 84 489 VIDEO 120 80 14824 AUDIO 127 105 352 AUDIO 148 127 361 VIDEO 160 120 11940 AUDIO 169 148 370 AUDIO 191 169 382 VIDEO 200 160 11539 AUDIO 212 191 386 AUDIO 233 212 388 VIDEO 240 200 14558 AUDIO 255 233 430 AUDIO 276 255 476 VIDEO 280 240 15564 AUDIO 297 276 495 AUDIO 319 297 496 VIDEO 320 280 11237 AUDIO 340 319 418 VIDEO 360 320 12838 AUDIO 361 340 355 AUDIO 383 361 401 VIDEO 400 360 14099 AUDIO 404 383 363 AUDIO 425 404 371 VIDEO 440 400 11233 AUDIO 447 425 379 ... ... ... ... AUDIO 5588 5567 428 VIDEO 5600 5560 14515 AUDIO 5609 5588 410 AUDIO 5631 5609 396 VIDEO 5640 5600 13810 AUDIO 5652 5631 398 AUDIO 5673 5652 404 VIDEO 5680 5640 13012 AUDIO 5695 5673 404 AUDIO 5716 5695 405 VIDEO 5720 5680 12555 AUDIO 5737 5716 418 AUDIO 5759 5737 418 VIDEO 5760 5720 10691 AUDIO 5780 5759 422 VIDEO 5800 5760 2667 AUDIO 5801 5780 422 AUDIO 5823 5801 421 VIDEO 5840 5800 3921 AUDIO 5844 5823 422 AUDIO 5865 5844 422 VIDEO 5880 5840 4694 AUDIO 5887 5865 421 AUDIO 5908 5887 471 VIDEO 5920 5880 5868 AUDIO 5929 5908 406 AUDIO 5951 5929 415 VIDEO 5960 5920 7952 AUDIO 5972 5951 415 AUDIO 5993 5972 437 All fragments downloaded successfully [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] 48000Hz stereo 2ch float VO: [opengl] 1280x720 yuv420p AV: 00:00:05 (99%) A-V: 0.000 Cache: 0s+0KB Exiting... (End of file) }}} Was man hier sieht: In Zeile 30 die "Base Fragment Url", für die in Zeile 4 die Bitrate steht. Die im vorigen Beispiel ermittelten möglichen Qualitätsstufe möchte man jetzt vllt. gezielt auswählen. Dies funktioniert, indem man mit der `--quality`-Option arbeitet: [2] {{{#!vorlage Befehl php AdobeHDS.php --manifest "http://artelive-lh.akamaihd.net/z/artelive_de@393591/manifest.f4m?hdcore" --debug --play --duration 1 --quality 578 | mpv --cache=2048 - }}} Im Folgenden kommt wieder die gekürzte Ausgabe von KSV Adobe HDS Downloader und mpv gemischt: {{{#!code text Playing: - [file] Reading from stdin... Manifest Entries: Bitrate URL 2960 1_1ff3745b7f18c904-p_ 1628 2_1ff3745b7f18c904-p_ 928 3_1ff3745b7f18c904-p_ 578 4_1ff3745b7f18c904-p_ 296 5_1ff3745b7f18c904-p_ Updating bootstrap info, Available fragments: 0 Segment Tables: Table 1: Number Fragments 1 10338 Fragment Tables: Table 1: Number Timestamp Duration Discontinuity 3068879 18413268000 6000 3069014 18414078000 5149 3069015 18414083149 0 3 3069020 18414114000 6000 3079216 18475290000 6000 Update complete, Available fragments: 3079216 Base Fragment Url: http://artelive-lh.akamaihd.net/z/artelive_de@393591/4_1ff3745b7f18c904-p_ Downloading Fragments: Adding fragment 3079215 to download queue Fragment 3d19fff00de90bc39ee514277d777087_4_1ff3745b7f18c904-p__Seg1-Frag3079215 successfully downloaded Writing fragment 3079215 to flv file Fragment 3079215: Type CurrentTS PreviousTS Size Position Writing AVC sequence header VIDEO 0 -1 56 Writing AAC sequence header AUDIO 0 -1 4 VIDEO 0 0 4376 AUDIO 15 0 327 AUDIO 36 15 399 VIDEO 40 0 1906 AUDIO 57 36 385 AUDIO 79 57 413 VIDEO 80 40 2122 AUDIO 100 79 405 VIDEO 120 80 2036 AUDIO 121 100 318 AUDIO 143 121 324 VIDEO 160 120 2148 AUDIO 164 143 298 ... ... ... ... AUDIO 5796 5775 363 VIDEO 5800 5760 1189 AUDIO 5817 5796 304 AUDIO 5839 5817 317 VIDEO 5840 5800 501 AUDIO 5860 5839 367 VIDEO 5880 5840 719 AUDIO 5881 5860 368 AUDIO 5903 5881 428 VIDEO 5920 5880 699 AUDIO 5924 5903 294 AUDIO 5945 5924 311 VIDEO 5960 5920 774 AUDIO 5967 5945 311 AUDIO 5988 5967 318 All fragments downloaded successfully [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] 48000Hz stereo 2ch float VO: [opengl] 426x240 yuv420p AV: 00:00:05 (99%) A-V: 0.000 Cache: 0s+0KB Exiting... (End of file) }}} Was man hier sieht: In Zeile 31 die "Base Fragment Url", für die in Zeile 9 die Bitrate steht. Der KSV Adobe HDS Downloader wählt die gewünschte Qualitätsstufe 578 kBytes pro Sekunde. = Links = == Intern == * [:Multimedia:] * [:Codecs:] * [:Streaming:] {Übersicht} Grundlegendes zum Thema; Audio- und Videostreams mit Browser-Plugins oder eigenständigen Programmen abspielen * [:Streams_speichern:] {Übersicht} Übersichtsartikel * [:Internetradio:] {Übersicht} Übersichtsartikel * [:Internetradio_aufzeichnen:] * [:Internet-TV:] {Übersicht} Übersichtsartikel == Extern == * [github:K-S-V/Scripts/blob/master/AdobeHDS.php:Projektseite] {en} * [github:K-S-V/Scripts/wiki:Anleitung zum Skript '''AdobeHDS.php'''] {en} * [https://forum.videohelp.com/threads/342430-F4F-capturing-converting Anleitung] {en} im [https://forum.videohelp.com/ VideoHelp-Forum] {en} – Quelle für diesen Artikel * [https://trisquel.info/en/wiki/how-download-http-dynamic-streaming-video-using-livestreamer-and-unplug How to download HTTP Dynamic Streaming video using Livestreamer and UnPlug] {en} – Eine altermative Anleitung #tag: Shell, PHP, Internet, Netzwerk, Multimedia, Streaming, Streams sichern