[[Vorlage(Getestet, bionic, focal)]] {{{#!vorlage Wissen [:Anwendungen_hinzufügen: Installation von Programmen] [:Paketinstallation_DEB: Ein einzelnes Paket installieren] [:Terminal: Ein Terminal öffnen] [:Editor: Einen Editor verwenden] }}} [[Inhaltsverzeichnis(1)]] [[Bild(Wiki/Icons/terminal.png, 48, align=left)]] [github:fadecut/fadecut:fadecut] {en} ist ein [:Shell:]-Skript, um mit Hilfe von [:Streamripper:] und anderen Kommandozeilenwerkzeugen Internetradio (Streams) aufzunehmen. Es sei allerdings angemerkt, dass sich der Einsatzzweck vorrangig auf MP3- ('''.m3u''') und OGG-Streams beschränkt, da der zugrunde liegende Streamripper beispielsweise keine Windows Media-Streams speichern kann. Besonders hervorzuheben sind die integrierten Fähigkeiten, einen Stream automatisch in einzelne Audiodateien zu zerlegen (inkl. Ein- bzw. Ausblenden am Liedanfang bzw. -ende) und mit den entsprechenden [:Metadaten:] zu vervollständigen. Letzteres ist aber nur möglich, wenn ein Stream diese Daten auch bereitstellt. Eventuell in diesem Zusammenhang noch interessant: das Skript [http://weidenfeld.net/bashtuner/?p=179 Bashtuner] {de} zum reinen Abspielen von Internetradios auf der Kommandozeile (siehe auch die entsprechende [topic:bash-tuner-webradio-hoeren-ueber-die-shell:Diskussion] im Forum). Wer für das Mitschneiden von Internetradio eine grafische Oberfläche bevorzugt, findet im Artikel [:Internetradio_aufzeichnen:] eine Übersicht verfügbarer Programme. {{{#!vorlage Hinweis Um Missverständnissen vorzubeugen: die Anwendung dient zum Aufnehmen und nicht zum Hören des Streams oder der erzeugten Titel. Im Rahmen dieses Artikel getestet wurde die Version 0.1.1 aus [:Precise:Ubuntu 12.04]. Da es sich noch um ein junges Projekt handelt, sollten auch die Abschnitte [#Modifikationen Modifikationen] und [#Problembehebung Problembehebung] beachtet werden. }}} = Installation = [[Bild(Wiki/Icons/synaptic.png, 48, align=right)]] Das Programm kann direkt aus den Paketquellen installiert [1] werden: {{{#!vorlage Paketinstallation fadecut, universe }}} = Verwendung = Man öffnet ein Terminal-Fenster [3] oder eine [:Terminal#Virtuelle-Konsole:Konsole] und erstellt zuerst eine Profildatei für die gewünschte Radiostation: {{{#!vorlage Befehl fadecut -c meine_radiostation }}} Dann bearbeitet man die folgenden Parameter mit dem Editor [:VIM:vi], der automatisch aufgerufen wird: {{{ STREAM_URL="http://streamurl" GENRE="Pop" COMMENT="Kommentar" ENCODING=mp3 ## Format der Zieldateien, für Vorbis dementsprechend ogg FADE_IN=1 FADE_OUT=4 }}} Zum wichtigsten Punkt, der "STREAM_URL", sei auf die Beispiele im Artikel [:Internetradio/Stationen:] verwiesen. Profildateien werden im Ordner '''~/.fadecut/profiles/''' im [:Homeverzeichnis:] gespeichert und können mit `-e` (statt `-c`) bearbeitet werden. Wer vi nicht mag, kann auch einen anderen Editor [4] nutzen. Anschließend kann dieser Radiosender mit folgendem Befehl aufgezeichnet und in einzelne Musikstücke zerlegt werden: {{{#!vorlage Befehl fadecut -p meine_radiostation -r }}} Die Aufnahme wird mit [[Vorlage(Tasten, strg+c)]] beendet. Ein bereits verarbeiteter Titel wird erkannt und nicht neu verarbeitet. Nicht erwünschte Titel können in einem separaten Ordner abgelegt werden. Diese werden dann ebenfalls nicht mehr weiter verarbeitet. Folgende Ordner werden verwendet (manche müssen manuell erstellt werden): {{{#!vorlage Tabelle verwendete Ordner +++ Ordnername Zweck +++ `done` für Titel, die man behalten möchte. Diese müssen manuell aus `new` hierhin kopiert werden. +++ `dontlike` enthält unerwünschte Titel. Die Größe kann 0 Byte sein, entscheidend ist der Dateiname. +++ `error` wenn während der Bearbeitung Fehler aufgetreten sind. So kann die problematische Datei später genauer untersucht werden. +++ `incomplete` für die laufende Aufnahme (und Lied-Fragmente einer unvollständigen Aufnahme) +++ `new` für fertig bearbeitete Titel +++ `orig` wenn bei der Aufnahme der Parameter `-k` verwendet wird, werden hier die Titel unbearbeitet abgelegt }}} {{{#!vorlage Hinweis Die Ordner '''incomplete/''' und '''new/''' werden automatisch in dem Verzeichnis angelegt, aus dem fadecut gestartet wurde. Es ist daher empfehlenswert, einen eigenen Ordner wie z.B. '''~/Radioaufnahmen''' anzulegen und das Programm in diesem Ordner zu starten. }}} {{{#!vorlage Tabelle Optionen +++ Parameter Zweck +++ `-c Profil` Radiosender-Profil erstellen +++ `-e Profil` Radiosender-Profil bearbeiten +++ `-p Profil -r` Radiosender-Profil aufnehmen (rippen) +++ `-p Profil -r -k` Aufnahme nicht nachbearbeiten }}} == Beispiel-Protokoll == Nachfolgend beispielhaft die Ausgabe einer Aufnahme-Sitzung: {{{#!vorlage Befehl fadecut -p oem-radio -r }}} {{{ 22:14:16 Info: Loading profile file(s): 22:14:16 /home/ubuntu/.fadecut/profiles/oem-radio 22:14:16 Success: /usr/bin/streamripper started pid=11104 22:14:18 Stream: Connecting... 22:14:30 Stream: [skipping... ] Kether - Day 2 22:14:54 Stream: [ripping... ] Kritical Audio - Springbreaks 22:19:56 Stream: [ripping... ] I AWAKE - New Time Nomads (Bass Edit) 22:20:06 Info: Processing: 22:20:06 Kritical Audio - Springbreaks.mp3 22:21:04 Success: Ready for listening: 22:21:04 kritical_audio_-_springbreaks.mp3 22:21:04 Info: showStats: 22:21:04 Output:1 Orig: Done: Dontlike: Error: 22:21:04 Double:0 Processed:2 22:25:42 Info: Processing: 22:25:42 I AWAKE - New Time Nomads (Bass Edit).mp3 22:26:42 Success: Ready for listening: 22:26:42 i_awake_-_new_time_nomads_(bass_edit).mp3 22:26:42 Info: showStats: 22:26:42 Output:2 Orig: Done: Dontlike: Error: 22:26:42 Double:0 Processed:3 22:26:44 Stream: [ripping... ] Kaya Project - ...So It Goes ... 22:49:29 Info: showStats: 22:49:29 Output:5 Orig: Done: Dontlike: Error: 22:49:29 Double:0 Processed:6 22:49:29 Success: Fadecut stopped! 22:49:29 Returnvalue=0 }}} == Konvertierung == fadecut kann auch bereits vorhandene Dateien nachbearbeiten. Problematisch ist aber das Ausgangsmaterial: Audiodateien mit verlustbehafteten Codecs sollten nicht mehr bearbeitet werden, da es sonst zum [wikipedia:Generationsverlust:] kommt. Dies betrifft sowohl MP3 als auch OGG. = Einstellungen = [[Bild(Wiki/Icons/settings.png, 48, align=right)]] Speziell bei Kommandozeilenprogramm kann die wiederkehrende Eingabe mehrerer Parameter mühsam sein. Standardwerte kann man daher in der Datei '''~/.fadecut/fadecutrc''' speichern (oder man nutzt die [:Bash#History:Verlaufsfunktion] der Bash). Weitere Informationen sind der [:man:Manpage] von fadecut zu entnehmen. = Modifikationen = Fadecut bietet noch Spielraum für Optimierungen. Alle im weiteren Verlauf genannten Änderungen erfolgen durch das Bearbeiten der Datei '''/usr/bin/fadecut''' mit einem Editor [4] und Root-Rechten. == Relay-Server == Praktisch ist die Nutzung von Streamripper als Relay, um die laufende Sendung während der Aufnahme mit einem externen [:AudioPlayer:] hören zu können, ohne den Stream doppelt herunterladen zu müssen. Dazu muss die folgende Zeile um die Option `-r` ergänzt werden. {{{ STREAMRIPPER_OPTS="-o always -T [mark]-r[/mark]" # streamripper options }}} Nun kann während der Aufnahme in vielen Audioplayern über die Adresse `http://localhost:8000` der Stream mitgehört werden. Diese Quelle kann aber nur auf dem eigenen Rechner empfangen werden (solange die Aufnahme läuft). == Bitrate wird reduziert == Das wahrscheinlich größte Problem ist derzeit (Version: fadecut 0.1.1-1) die Reduzierung der [wikipedia:Bitrate:] von MP3-Dateien, auch wenn der Stream eine höhere Qualität bietet. Da fadecut den Encoder [:LAME:] ohne entsprechende Option aufruft, wird bei der Kodierung nur die Standard-Bitrate von 128 kbps benutzt. Idealerweise müsste zuerst die Bitrate des Streams ermittelt werden (Streamripper erkennt diese) und bei der anschließenden Kodierung berücksichtigt werden. Als Workaround kann man die Funktion `mp3Encoding` ändern und den Aufruf von `lame` um die gewünschte Bitrate bzw. Qualitätsstufe ergänzen. Dies setzt natürlich voraus, dass die Bitrate des Streams vorher bekannt ist. Da aber nicht alle Streams mit der gleichen Bitrate gesendet werden, ist ein fester Wert in der Praxis eher hinderlich, wenn man verschiedene Internetradios aufzeichnen möchte (verursacht aber auch kein dramatisches Problem). Diese Problematik betrifft prinzipiell auch die Speicherung als OGG-Datei. Abhilfe schafft eine manuelle Änderung der Funktion `oggEncoding`. Der entsprechende Parameter ist im Artikel [:Vorbis#Enkodieren:] beschrieben. == Profil-Editor ändern == Der als Standard verwendete Editor [:VIM:vi] reicht nach Meinung vieler Konsolen-Nutzer vollkommen aus. Möchte man dennoch einen anderen Editor einstellen, ersetzt man den Aufruf von `vi ` durch das gewünschte Programm. = Problembehebung = == Split-Point == Wenn einzelne Musikstücke nicht sauber getrennt werden oder noch unerwünschte Bestandteile wie Sprache oder Werbung enthalten, kann man versuchen, den "Split-Point" (die Stelle zwischen zwei Stücken, an der getrennt wird; im Regelfall "Stille") zu beeinflussen. Dazu dienen die Optionen `TRIM_BEGIN=x` und `TRIM_END=y` in der Profildatei. Dieser Split-Point ist aber vom jeweiligen Stream abhängig, da ein Sender diesen beeinflussen kann. == Metadaten == Obwohl Metadaten wie Interpret und Titel automatisch eingebettet werden, stellt die dabei verwendete Formatierung mit Unterstrichen nicht jeden zufrieden (das gleiche betrifft u.U. den Dateinamen). Bei einer Überarbeitung helfen externe (grafische) Tag-Editoren, die im Artikel [:Multimedia#Verwaltung:] aufgelistet sind. Wer auch hier die Kommandozeile bevorzugt, hat die Wahl zwischen '''eyeD3''' und '''id3v2''' (siehe [:Überprüfung_MP3-Sammlung#ID3-Tags:]). == Zeitgesteuerte Aufnahme == Um eine Aufnahme zu einem späteren Zeitpunkt automatisch aufnehmen zu lassen, kann fadecut über [:Cron:] aufgerufen werden. Dazu ist folgender Eintrag in der [:Cron#Eine-Crontab-fuer-einen-Benutzer-einrichten:crontab] des Benutzers notwendig: {{{ /usr/bin/fadecut -p meine_radiostation -r > /dev/null 2>&1 }}} {{{#!vorlage Warnung Cron-Jobs senden ihren Output nach "mail". Da unter Ubuntu das Paket '''mailx''' standardmäßig nicht installiert ist, führt der Aufruf von fadecut über `cron` nach wenigen Minuten zu einem Absturz. Abhilfe schafft die Installation des fehlenden Pakets oder das Anfügen von "`> /dev/null 2>&1`" am Ende der Zeile im Skript. Außerdem fehlen in obigen Beispiel noch die konkreten Zeitangaben, wann `cron` den Befehl ausführen soll. Informationen dazu finden sich im Artikel [:Cron:]. }}} = Links = * [github:fadecut/fadecut:Projektseite] {en} * [http://streamripper.sourceforge.net/faq.php Streamripper FAQ] {en} - unterstützte Stream-Formate * [:Audiodateien_umwandeln:] {Übersicht} Übersichtsseite * [:LAME:] - MP3-Kodierer * [:Vorbis:] - OGG-Kodierer * [:Internetradio_aufzeichnen:] {Übersicht} Übersichtsartikel #tag: Internet, Multimedia, Radio, Internetradio, Shell