Drücke „Enter”, um zum Inhalt zu springen.

Audio Aufnahmen auf VU+ Receiver automatisch in MP3-Datei umwandeln

Manuel 0

Regelmäßig nehme ich über meinen VU+ Receiver Sendungen aus dem Radio auf, die ich dann hören wenn ich Zeit habe. Da ich dann aber die Aufnahmen auf PC oder Handy höre, war es mir irgendwann zu umständlich, die Aufnahmen manuell immer in ein geeignetes Format umzuwandeln bzw. Player zu installieren, die mit dem .ts Dateien zurecht kommen.

Da auf den VU+ Receivern ja ein Linux läuft, lässt sich aber im Handumdrehen etwas selbst basteln. Damit dass was ich mir gebastelt habe, auch funktioniert, muss man zuerst das Paket ffmpeg installieren, dass den passenden Befehl zum Konvertieren der .ts Datei mitbringt. Das passt mit folgendem Befehl, wenn man sich auf der Box via SSH/Telnet angemeldet hat:

opkg install ffmpeg

Anschließend kann man folgenden Quellcode z.B. direkt in /home/root als Skript abspeichern. Ich habe das Skript bei mir convert.sh genannt. Vergessen sollte man am Ende nicht, das Skript auch noch mit chmod 660 ausführbar zu machen.

#!/bin/sh

# Where to write the logfile
LOGFILE="/var/log/convert.log"

# Where are the file found for convert
RECORD_DIR="/media/hdd/movie/Sunshine Live/"

# 0 = full console ouput, 1 = only necessary output
SILENT=0

# Some init stuff
shopt -s nullglob
OLDIFS=$IFS
IFS=$'\n'

# trap ctrl-c and call ctrl_c()
trap breakScript INT

# Handling script termination by user
function breakScript() {
        echo "Script execution stopped!" | tee -a $LOGFILE
        if [ -f /var/run/convert.pid ] ; then
                rm /var/run/convert.pid
                exit 1
        fi
}

# Handling alread running script
if [ -f /var/run/convert.pid ]; then
        if ps -p $(cat /var/run/convert.pid) > /dev/null
        then
                echo "Script is already running!" | tee -a $LOGFILE
                exit 2
        else
                echo "Script was stopped unexpected before, continue this run" | tee -a $LOGFILE
        fi
fi

# Save process if for check, script is already running
echo $$ > /var/run/convert.pid

# Parse all files in given directory
for FILE in $(find $RECORD_DIR -type f -name "*.ts" -mmin +60 -exec ls {} \;); do
        if [ -f $FILE.mp3 ]; then
                if [ "$SILENT" -eq 0 ] ; then
                        echo "Skip convert for '$FILE'" | tee -a $LOGFILE
                fi
        else
                echo "Convert '$FILE' to '$FILE.mp3'" | tee -a $LOGFILE

                AUTHOR="$(echo $FILE|cut -d "-" -f2 | sed 's/^[ \t]*//;s/[ \t]*$//')";
                SHOW="$(echo $FILE|cut -d "-" -f3 | sed 's/^[ \t]*//;s/[ \t]*$//' | sed "s/\.ts$//g")";

                nice -n19 ffmpeg -hide_banner -loglevel panic -i "$FILE" -vn -ar 44100 -ac 2 -b:a 192k -metadata title="$AUTHOR - $SHOW" -metadata artist="$ARTIST" -metadata show="$SHOW" "$FILE.mp3" | tee -a $LOGFILE
                ##nice -n19 ffmpeg -metadata title="$FILE" -metadata artist="$ARTIST" -metadata show="$SHOW" -hide_banner -loglevel panic -i "$FILE" -vn -ar 44100 -ac 2 -b:a 192k "$FILE.mp3" | tee -a $LOGFILE
                RESULT=$?

                echo "exit code: $RESULT" | tee -a $LOGFILE
                if [ "$RESULT" -eq 0 ]; then
                    touch $FILE.remove
                fi
        fi

        if [ -f $FILE.remove ]; then
                for CONVFILE in $(ls -1 $FILE*)
                do
                        if [ $CONVFILE != "$FILE.mp3" ] ; then
                                rm $CONVFILE
                        fi
                done
        fi
done

# Cleanup
rm /var/run/convert.pid
IFS=$OLDIFS

Groß im Detail mag ich jetzt gar nicht erklären, wie genau das Skript funktioniert. Wichtig ist, dass man mal drüber schaut und es an die eigenen Bedürfnisse anpasst.

Ich habe das Skript bei mir dann noch via crontab -e eingetragen, so dass das alle 30 Minuten automatisch läuft:

*/30 * * * * /home/root/convert.sh

Letztendlich wird das Skript alle 30 Minuten ausgeführt. Sucht dann im angegebenen Pfad nach .ts Dateien, wandelt die um und gibt denen auch noch halbwegs aussagekräftige Tags mit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.