Radiostream aufnahmen mit Unterbrechungen alle 15min?

  • Moin, ich suche nach ner möglichkeit ein Internetradio aufzunehmen, am besten in so 10-15min Intervallen.

    Das heisst mir soll im Schnitt alle 15min eine neue Datei angelegt werden, wenn ich das radio voll durchlaufen lasse, meist hab ich so 12 Std Rips, und die sind einfach maximal unhandlich.

    Dateiformat was dabei entsteht ist mir eigentlich fast egal

    Jemand ne vorstellung?
    und vorneweg: ein iPad ist keine lösung für mich, auch kein iPhone

  • Du kannst statt ffmpeg auch einfach curl oder wget dafür nutzen, da Onlineradio normales http ist. Unter Linux kann man dafür den timeout-Befehl und wget nutzen, normalerweise sind beide bereits vorinstalliert:

    Code
    timeout 15m wget http://linkzursendung/sendung

    Was passiert ist, dass wget bei jedem Durchlauf auch direkt eine neue Datei anlegt, sodass man von allen 15 Minuten der Sendung jeweils einzelne Dateien hat. Die heißen dann sendung.1, sendung.2 usw

    Okay, die brauchen noch .mp3 am Ende des Dateinamens:

    Code
    for i in sendung.*; do mv "${i}" "${i}.mp3" ; done

    Falls kein Linux zur Hand ist, in Windows einfach die WSL-Funktion aktivieren und es dort machen.

  • Ich bin Windowsnutzer, da ist hier wohl das Größte Problem, ich mein, ich könnt nen schnödes ubuntu sicher in ne VM packen, aber ist halt absolut nicht mein gebiet



    @Shadow, macht der dann automatisch alle 15min ne neue Datei?

    Einmal editiert, zuletzt von Spit (4. Juli 2021 um 21:17)

  • Achso ja, man muss das natürlich in eine Schleife machen, sonst hat man nur die ersten 15 Minuten:
    Richtig wäre also:

    Code
    while true; do timeout 15m wget http://linkzursendung/sendung ; done

    Und ja, 2-3 Sekunden gehen jeweils verloren zwischenzeitlich

  • Auch wenn dich die kurzen Pausen bei den Iterationsübergängen nicht stören, würde mich eine unterbrechungsfreie Lösung als Herausforderung durchaus reizen.

    [url=https://man7.org/linux/man-pages/man1/split.1.html]split(1)[/url] ist genau der richtige Kandidat für das Splitten eines großen Files in kleinere Chunks und es liest auch munter einen Endlosstream von stdin ein. Man kann also einfach den Stream nach split pipen und gibt eine Maximalgröße für die Chunks mit:

    curl -s "http://carbon.silvertechhosting.com:1170/stream" | split -b 8M -a 5 - out &

    Das legt 8M große Files mit dem Namen out und einem fünfstelligen, alphabetischen Suffix an. Mit -d und -x können alternativ numerische Suffixe (dezimal bzw. hexadezimal) verwendet werden. Das ganze kann man eventuell mittels Skript einmal pro Tag in einem neuen Ziel-Directory neustarten lassen.

    Nachteil ist hier natürlich, dass wir einen MPEG Transport Stream byteweise zerschneiden. MPEG TS ist zwar dafür ausgelegt, sowas zu verkraften, aber beim Decoding gehen uns womöglich die zerschnittenen Packets jeweils am Anfang und am Ende verloren. Byteweise geht aber nichts verloren und man könnte die Chunks danach wieder problemlos mit cat zusammensetzen und hat wieder ein unterbrechungsfreies Ergebnis. Auch müsste man hier zunächst ausrechnen, wie groß die Chunks werden müssten, wenn man eine bestimmte (eher: ungefähre) Anzahl an Minuten und Sekunden darin auffangen möchte.

    • • • – • – – • – –

    Einmal editiert, zuletzt von s4ndwichMakeR (7. Juli 2021 um 10:55)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!