ubuntuusers.de

UKW-Radio zeitgesteuert aufnehmen

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Dieses Skript kann verwendet werden, um bequem zeitgesteuerte UKW-Radioaufnahmen zu erstellen. Dafür ist eine FM-fähige Radio/TV-Karte und UKW-Empfang nötig. Es ist nicht für Internetradio geeignet, dazu siehe Internetradio aufzeichnen. Verwendet wird Gnomeradio und der GNOME SoundRecorder. Außerdem kommt Zenity zum Einsatz sowie das Programm xte. Falls eine kombinierte Radio/TV-Karte verwendet wird, können meist TV und FM-Radio nicht gleichzeitig verwendet werden.

Installation

Folgende Pakete müssen installiert [1] sein:

  • gnomeradio, universe

  • zenity

  • xautomation, (für xte)

Vorbereitung

Um das Skript nutzen zu können, muss zunächst in einem Editor [2] eine Liste der in Gnomeradio als Presets gespeicherten Sender erstellt werden. Die Sendernamen dürfen Leerzeichen enthalten. Die Position auf der Liste wird mit einem Semikolon (;) angehängt, einstellige Zahlen mit führender "0". Beispiel:

1
2
3
4
Bremen 1;01
Hit Radio Antenne;02
Funkhaus Europa;03
Bremen 4;04

Diese Liste wird als Senderliste.lst in ~/.gnomeradio abgespeichert (den Ordner ggf. anlegen).

Anschließend das folgende Skript herunterladen, unter einem aussagekräftigen Namen (z.B. ~/bin/UKW-Aufnahme-Skript.sh) abspeichern und ausführbar [5] machen.

 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
#!/bin/bash
# UKW-Radio Aufnahme-Skript Autor Heinrich Schwietering (c) 2009
# http://forum.ubuntuusers.de/topic/ukw-radio-fm-radio-zeitgesteuert-aufnehmen
MCD=/usr/bin/gnome-sound-recorder
USER=~/Gnomeradio-Aufnahme
DISPLAY=:0.0
zenity --help > /dev/null || { echo "Fehler: Du benötigst \"zenity\" um dieses Script nutzen zu können." && exit 1 ; }
test -e $MCD || { zenity --error --text "Fehler: Du benötigst \"gnome-sound-recorder\" um dieses Script nutzen zu können." && exit 1 ; }
test ! -e ~/.gnomeradio/Sender.lst && zenity --error --text "~/.gnomeradio/Sender.lst wurde nicht gefunden" && exit 1
SENDER=`cat ~/.gnomeradio/Sender.lst | cut -d ";" -f 1 | zenity --list --title "Bitte Sender auswählen" --column "Sender:"` || exit 0
echo `cat ~/.gnomeradio/Sender.lst | grep "$SENDER;**"`  &>  ~/.gnomeradio/Sender
SENDERNUMMER=`cat ~/.gnomeradio/Sender | cut -d ";" -f 2`
SENDERNAME=`cat ~/.gnomeradio/Sender | cut -d ";" -f 1` && rm ~/.gnomeradio/Sender
test "$SENDER" || { zenity --error --text "Es wurde kein Sender ausgewählt." && exit 1 ; }
TITLE=`zenity --entry --title "Titel der Aufnahme (optional)" --text "Wenn gewünscht einen Titel für die Aufnahme festlegen" --entry-text ""` || exit 0
DAY=`zenity --calendar --title "Aufnahmedatum" --text "Bitte das Datum der Aufnahme festlegen"` || exit 0
TIME=`zenity --entry --title "Aufnahmestart (HH.MM)" --text "Bitte den Startzeitpunkt der Aufnahme festlegen" --entry-text "$(date --date="75 seconds" +%H.%M)"` || exit 0
DAUER=`zenity --entry --title "Dauer" --entry-text "45" --text "Bitte die Aufnahmedauer in Minuten eingeben"` || exit 0
if [ "$TITLE" != "" ]; then
FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename="$USER"/"$SENDERNAME"-"$TITLE"-"$DAY"-"$TIME".mp3` || exit 0
else
FILE=`zenity --file-selection --save --confirm-overwrite --title "Name und Ort zum Speichern auswählen" --filename="$USER"/"$SENDERNAME"-"$DAY"-"$TIME".mp3` || exit 0
fi
if [ "$TIME" == "$(date --date="75 seconds" +%H.%M)" ]; then
echo "DISPLAY=$DISPLAY ~/.gnomeradio/Senderwahl.sh "$SENDERNUMMER"" | at $TIME $DAY &> /tmp/recerror
else
(echo sleep 55 && echo "DISPLAY=$DISPLAY ~/.gnomeradio/Senderwahl.sh "$SENDERNUMMER"") | at $TIME $DAY-1 minutes &> /tmp/recerror
fi
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror)" && rm /tmp/recerror && exit 1
(echo "killall $MCD" && echo mv /tmp/gsr*.* "\"$FILE\"") | at $TIME $DAY+$DAUER minutes &> /tmp/recerror1
test $? -gt 0 && zenity --error --text "$(cat /tmp/recerror1)" && rm /tmp/recerror1 && exit 1
zenity --info --text "Sender: $SENDERNAME\n\Titel: $TITLE\n\Beginn: $DAY, $TIME Uhr\nDauer: $DAUER Minuten, Dateiname: $FILE\n\nStatus: OK\n$(cat /tmp/recerror)\n$(cat /tmp/recerror1)\n\n\nTermin mit \"atq\" im Terminal überprüfbar;\n\mit \"atrm 'jobnr'\" löschbar!"
test -e /tmp/recerror && rm /tmp/recerror
test -e /tmp/recerror1 && rm /tmp/recerror1

Die Variablen für den Speicherort "USER=" und das Display "DISPLAY=" bei Bedarf anpassen; auch die voreingestellte Aufnahmedauer "--entry-text "45"" (Zeile 18) kann im Skript verändert werden.

Die eigentliche Aufnahme wird durch ein - per at-Job im Skript aufgerufenes - Senderwahl.sh-Skript geregelt, das Gnomeradio mit dem gewählten Sender startet und im GNOME-SoundRecorder die Aufnahme beginnt (geschieht durch die xte-Befehle, die die Tasten der Shortcuts "imitieren", z.B. Strg + R zum Start der Aufnahme im GNOME-SoundRecorder):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#!/bin/bash
count=1       
gnomeradio &
sleep 0.7
xte 'key Page_Up'
while [ $count -le  ${1} ]
      do
        xte 'key Down'
        count=$[$count+1]   
      done
sleep 1 
gnome-sound-recorder & 
sleep 2
xte 'keydown Control_L' 'keydown R' 'keyup Control_L' 'keyup R'

sleep 20
killall gnomeradio
exit 1

Dieses Skript herunterladen, als ~/.gnomeradio/Senderwahl.sh abspeichern und ausführbar machen. Um ein "Mithören" - wenn nötig - zu verhindern, ein " 'key m'" in Zeile 5 anhängen (mit der Leerstelle vor key!). Gnomeradio wird nach 20 Sekunden beendet (im Skript anpassbar), da es für die eigentliche Aufnahme nicht gebraucht wird. So kann aber noch kontrolliert werden, ob auch tatsächlich der richtige Sender verwendet wird.

Außerdem muss als Aufnahmequelle die FM/TV-Karte angegeben werden. Im PulseAudio-Volume-Control-Fenster die Karte im Eingaberäte-Reiter als "Vorgabe" einstellen), damit der GNOME-SoundRecorder auch von der richtigen Quelle aufzeichnet!

Benutzung

Die Benutzung ist selbsterklärend: Das Hauptskript im Terminal aufrufen und die gewünschten Angaben machen. Zum Schluss erscheint noch ein Fenster, in dem die Eingaben überprüft werden können. Komfortabler ist es, sich im Menü einen Starteintrag [4] zu erstellen und das Skript so zu starten [3].

Die Aufnahmen werden nach dem Muster "Sender-Datum-Zeit" (oder "Sender-Titel-Datum-Zeit", falls ein Titel angeben worden ist) am Ende der Aufnahmezeit aus /tmp/gsr-record-unbenannt-*.* umbenannt und ins angegebene Verzeichnis verschoben. Das gewünschte Format kann im GNOME-SoundRecorder eingestellt werden, die entsprechende Dateiendung im Skript anpassen (Vorgabe ist ".mp3").

Da es bei "Sofort-Aufnahmen" (Verwendung der voreingestellten Zeit) vorkommen könnte, dass die Aufnahme gestartet wird, bevor das letzte Zenity-Kontrollfenster abgearbeitet ist (dann könnten die xte-Befehle ins Leere laufen) ist ein "Zeitpuffer" eingebaut. Die Aufnahme beginnt erst mit der nächsten "vollen" Minute plus ca. 5 Sekunden, bis alle Anwendungen gestartet und richtig eingestellt sind!

Andere Aufnahmen werden mit einem kleinen Trick "sekundengenau" gestartet: Da sich at-Jobs per se nicht sekundengenau angeben lassen, wird die Ausführung wird um eine Minute vorverlegt, und dann mit "sleep 55" um 55 Sekunden verzögert. Mit der "Startzeit" von 5 Sekunden kann dann die Aufnahme recht genau zur "vollen" angegebenen Minute gestartet werden - den Wert ggf. anpassen.

Probleme

Falls nicht der richtige Sender eingestellt, oder die Aufnahme nicht gestartet wird, müssen ggf. die "sleep"-Werte im Senderwahl-Skript heraufgesetzt werden. Diese sind abhängig von der Leistungsfähigkeit der verwendeten Hardware und der Auslastung zur Zeit des Aufnahmestarts (ggf. sind auch kürzere Zeiten möglich).

Alternative

Es existiert auch eine alternative Version, die die Aufnahme mit arecord (aus dem Paket alsa-utils) bewerkstelligt. Da allerdings nur eine Abspeicherung als Wave-Datei praktikabel ist, entstehen damit sehr schnell sehr große Dateien (eine Aufnahme-Stunde = 660 MB!). Schneiden und Weiterverarbeiten kann man die Dateien dann z.B. mit Audacity, und/oder sie in das Format eigener Wahl umwandeln.

Diese Revision wurde am 1. April 2020 16:55 von Heinrich_Schwietering erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Multimedia, Radio