Skip to content
  • Kategorien
  • Aktuell
  • Tags
  • Beliebt
  • Benutzer
  • Gruppen
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
MediathekView Logo

MediathekView-Forum

  1. Übersicht
  2. Fragen, Hilfe, Kritik
  3. Media Stream Download zum remote ausführen übergeben?

Media Stream Download zum remote ausführen übergeben?

Geplant Angeheftet Gesperrt Verschoben Fragen, Hilfe, Kritik
6 Beiträge 3 Kommentatoren 309 Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • porgP Offline
    porgP Offline
    porg
    schrieb am zuletzt editiert von porg
    #1

    Rundfunk-Anbieter bieten den Videostream in jenen grundsätzlich Varianten an:

    I) Direkten Link zur *.mp4 Videodatei der jeweiligen Qualitätseinstellung (low, mid, high):

    • ✅ Diese kann man leicht direkt an HTTP Download Programm wie curl, wget oder aria2 übergeben
    • 👍 Dies verwende ich in meinem Setup für Hand downloading over to NAS (completely external download)

    II) Link zur Video-Streaming-Manifest-Datei für das jeweilige Streaming Protokoll, z.B. der ORF liefert .m3u für HLS aus.

    • ✅ Der lokale Download z.b. im Set “Mac speichern” (mit dem Hilfsprogramm ffmpeg) funktioniert dabei einwandfrei: Das Streaming-Manifest wird an ffmpeg übergeben, der handhabt das Video-Streaming-Protokoll und die Ausgabe des Audio-Video-Streams erfolgt nicht wie beim Playback auf den Bildschirm, sondern wird einfach in eine Datei weiter-ge-piped.
    • ❌ Die Übergabe an ein HTTP Download Programm funktioniert hier naturgemäß nicht: Ladet und speichert die m3u Datei freilich wie sie ist. Davon hat man jedoch nichts, denn man will ja die Video-Datei am NAS abspeichern.

    III. Falls es noch weitere grundsätzliche Varianten gibt, bitte gern angeben und erklären. Danke!

    Fragen zu II: Wie kann man den HLS/MPEG-DASH/etc Video-Stream zum Download an ein NAS übergeben?

    1. Pfad zur zugrundeliegenden vollständigen Videodatei bekommen? Liefert die API jener Rundfunkanstalten eventuell auch die URL der vollständigen Video-Datei aus?
    • 👉 Dann könnte ich dies als reinen HTTP Download handhaben (siehe Punkt 1).
    1. Die A/V-Quellen liegen ausschließlich segmentiert vor und können somit ausschließlich via Streaming Protokoll bezogen werden.
    • 👉 Dann geht es nur mit Streaming-Protokoll-fähigem Programm wie ffmpeg. Das kann ich ja auch am NAS laufen lassen. Nur eben nicht ganz so flexibel/leicht wie mit aria2.
    • a) Möglichkeit Parallelladen + Warteschleife zu kombinieren: wie zB “Erlaube 3 Downloads parallel, alles andere kommt in die Schleife”. aria2 kann das. ffmpeg selbst kann das höwa nicht. Man könnte das nur drüber aufbauen. Einen Steuerungsprozess, der Subprozesse spawned (Max-Parallel-DL) und die andren in Warteschleife hält. Das selber basteln werde ich nicht. Gibt’s dazu general purpose unix Lösung?
    • b) Streaming-Download fortführen wo zuletzt gestoppt (nach Stromausfall, Internetausfall, Softwarecrash, etc)? Geht das mit ffmpeg? Bei reinem HTTP Download Programmen geht das leicht, zB bei curl gibt es -continue-at . Bei Media-Streaming-Protocol to file piping, ist das nicht mehr so trivial. Ein simpler Byte-Offet geht da nicht. Zudem wendet ffmpeg im “Mac Speichern” Set einen Audio-Bitstream-Filter an, d.h. Quelle und Ziel sind dann von Haus aus etwas anders. Evtl gibt es aber dennoch Fortsetzung-Mechanismen? z.B. Letzter Timecode/Frame-Nr in lokal gespeicherter Datei auslesen, sowie letzte Segment-Grenze identifizieren. Dann Rückschluss ziehen in welchem Segment der Stream-Download zuletzt war. Dann letzten Segment-Part in lokaler Datei löschen, Stream-Download fortsetzen. Aber das klingt alles schon sehr komplex.

    Also bevor ich da tiefer hineingehe, wollt ich mal fragen was die Macher und die Experten zu dem Thema sagen. Danke für Hinweise!

    Georg-JG 1 Antwort Letzte Antwort
    • vitussonV Offline
      vitussonV Offline
      vitusson
      schrieb am zuletzt editiert von
      #2

      Die A/V-Quellen liegen ausschließlich segmentiert vor und können somit ausschließlich via Streaming Protokoll bezogen werden.

      Ich würde mir ein Set machen das die m3u8 URLs in eine Datei auf dem NAS schreibt und diese dann dort von ffmpeg abarbeiten lassen.

      1 Antwort Letzte Antwort
      • Georg-JG Offline
        Georg-JG Offline
        Georg-J
        antwortete auf porg am zuletzt editiert von
        #3

        @porg sagte in Media Stream Download zum remote ausführen übergeben?:

        II) Link zur Video-Streaming-Manifest-Datei für das jeweilige Streaming Protokoll,
        […] die Ausgabe des Audio-Video-Streams erfolgt nicht wie beim Playback auf den Bildschirm, sondern wird einfach in eine Datei weiter-ge-piped.

        Es wird nicht weitergepiped, es wird das Format geändert.

        Man kann auch die einzelnen TS-Segmente mit wget o. ä. laden. Dann kann man auch nach einer Unterbrechung oder einem Fehler beim Laden eines Segments dort wieder anknüpfen. Nur am Ende benötigt man ffmpeg, um alle TS-Segmente zu einer mp4-Datei zu wandeln.

        1 Antwort Letzte Antwort
        • porgP Offline
          porgP Offline
          porg
          schrieb am zuletzt editiert von porg
          #4

          @vitusson und @Georg-J danke für Eure Ideen! Zusammen habt ihr eigentlich alle Teile aufgezeigt die es dazu braucht. 👍

          Lösungs-Bestandteile

          Nochmals Eure Vorschläge als numerische Oberpunkte, und als a-b-c… Unterpunkte was dazu noch auszuarbeiten werden müsste (“👉”).

          1. m3u8 files in Watch Folder hochkopieren als rudimentäre persistente Daten-Grundlage für die Job-Verwaltung.
          • a) Diese erst löschen/umbenennen wenn Job fehlerfrei fertig ist. zB könnten die Dateien Status-Suffix bekommen wie .init, .inprogress , .done. Und somit können die Jobs auf der macro-Ebene leicht gestoppt und fortgesetzt werden. Das ist der erste Teil der Verarbeitung der noch mal tool-unspezifich ist. Guter Ansatz!
          • b) 👉 Aus erhaltener m3u die qualitäts-spezifische(n) weitere(n) m3u Dateien laden in der alle Segmente stehen.
          • c) 👉 Konvertiere filmname.m3u zu filmname.txt (in Format wie wget, curl & co es bruachen) – Das sollte mit einem sed find/replace zu machen sein.
          1. Einzelnen TS-Segmente mit Downloader Utility laden.
          • ✅ Files aus filmname.txt Liste laden, und das mit pausieren/fortsetzen gehört zur Standardausrüstung.
          • ✅ Da muss man nichts neu machen, nur die Paramatersyntax ordentlich nutzen.
          1. Am Ende mit ffmpeg die Segmente in Container ausgeben.
          • Da muss man ebenso nichts neu machen.

          Explizite Nachfrage — bevor man sich die Arbeit antut…

          • Einen grundsätzlich anderen Ansatz Nr. 3 gibt es nicht?
          • Die APIs jener Rundkfunkanstalten bieten keine full-video-URL ?
          Georg-JG 1 Antwort Letzte Antwort
          • Georg-JG Offline
            Georg-JG Offline
            Georg-J
            antwortete auf porg am zuletzt editiert von
            #5

            @porg Beachte noch das:

            • Merke die URL zur m3u-Datei. Falls darin relative Adressen stehen, dann sind diese relativ zur gemerkten URL.
            • Bennene die lokalen ts-Segmente um. Es gibt Fälle, da sind die Dateinamen aller Segmente eines Films gleich. (Sie unterscheiden sich im Verzeichnisnamen.)
            • Du brauchst am Ende eine Liste der lokalen Dateinamen, die du ffmpeg mitgibst:
              ffmpeg.exe -v quiet -i chunks.m3u8 -c copy media.mp4
            1 Antwort Letzte Antwort
            • vitussonV Offline
              vitussonV Offline
              vitusson
              schrieb am zuletzt editiert von vitusson
              #6

              Irgendwer denkt hier zu kompliziert oder ich zu einfach.

              Man macht sich ein Set in dem man für m3u8 Suffixes definiert
              das /foo/bin/FFMget.sh aus geführt werden soll
              also PROGRAMM: /foo/bin/FFMget.sh
              SCHALTER: %f %T.mp4
              %f, das ist die URL, die wird in die Datei .ffmgetfle angehängt
              Die URL sind schon unterschiedlich, je nach Auflösung, da braucht es keine
              “Aus erhaltener m3u die qualitäts-spezifische(n) weitere(n) m3u Dateien laden in der alle Segmente stehen.”

              https://srf-vod-amd.akamaized.net/world/hls/battlemansion/2024/02/battlemansion_20240214_133227_4203100_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index-f1-v1-a1.m3u8
              https://srf-vod-amd.akamaized.net/world/hls/battlemansion/2024/02/battlemansion_20240214_133227_4203100_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index-f3-v1-a1.m3u8
              https://srf-vod-amd.akamaized.net/world/hls/battlemansion/2024/02/battlemansion_20240214_133227_4203100_v_webcast_h264_,q40,q10,q20,q30,q50,q60,.mp4.csmil/index-f6-v1-a1.m3u8
              

              FFMget.sh

              #!/bin/bash  
              URL=$1
              FILENAME=$(basename "$2") 
              echo -e "$URL -c copy -bsf:a aac_adtstoasc \"$FILENAME\" " >>/$PFADZUNAS/.ffmgetfile
              
              exit 0
              

              Dann schreibt man sich ein Skript das auf der NAS läuft

              #!/bin/bash  
              while read line; do eval ffmpeg -i $line; done < .ffmgetfile && rm -f .ffmgetfile
              

              Mal so schnell zusammengehackt und kurz getestet, ich mache so was ähnliches für normale mp4 Downloads weil ich das Java Programm schließen möchte und später via aria2c downloade wenn es mir passt

              Nur mal so als Denkansatz, das kann man sich ja individuell noch selber zurechtbasteln.

              • Die APIs jener Rundkfunkanstalten bieten keine full-video-URL ?

              Nein, sonst würde MV die ja nutzen…

              1 Antwort Letzte Antwort

              14

              Online

              6.6k

              Benutzer

              6.1k

              Themen

              39.0k

              Beiträge
              • Anmelden

              • Du hast noch kein Konto? Registrieren

              • Anmelden oder registrieren, um zu suchen
              • Erster Beitrag
                Letzter Beitrag
              0
              • Kategorien
              • Aktuell
              • Tags
              • Beliebt
              • Benutzer
              • Gruppen