Podcasts sind eine tolle Sache und ich höre sie wahnsinnig gerne beim Autofahren. Um die Zeit noch effektiver zu nutzen, möchte ich manche Audiodateien bei erhöhter Geschwindigkeit hören. Das unterstüzten mittlerweile viele Podcast-Spieler auf dem Handy von Hause aus – nur leider nicht das Entertainment-System von meinem Auto. Und genau deshalb habe ich einen Weg gesucht, um die Podcast-Dateien schnell und komfortabel unter Linux im Batchmodus umzuwandeln, so dass sie mit einer höheren Geschwindigkeit vom USB-Stick abgespielt werden.
Dazu benötigt man unter Ubuntu nur ein Paket: ffmpeg. Wenn man eine etwas bessere Qualität haben möchte, kann man alternativ eine Kombination aus verschiedenen Programmen einsetzen. Dazu benötigt man dann die Pakete: sox, libsox-fmt-mp3, python-mutagen sowie das Programm mid3cp. Letzteres bekommt man unter ubuntu, wenn man diese Datei in github in /usr/bin schiebt und ausführbar macht.
Wenn man diese Voraussetzungen geschaffen hat, kann man mit folgendem Skript sehr komfortabel alle Audio-Dateien in einem Verzeichnis komplett umwandeln.
#!/usr/bin/env bash # # Simple shell script to speed up audio files to 1.5 playing speed # with ffmpeg # #========================================================== # #contains username separated by newline INPUTDIR="/mnt/markus/Downloads/Sorted/Mp3Z/Podcasts/export/dk" #Directory to link training files to OUTPUTDIR=/mnt/output/dk USE_FFMPEG=true # ffmpeg binary FFMPEG_COMMAND=/usr/bin/ffmpeg SOX_COMMAND=/usr/bin/sox MID3CP_COMMAND=/usr/bin/mid3cp echo `date` Begin Audio Conversion find "${INPUTDIR}" -type f -regextype posix-egrep -regex '.*\.(mp3|m4a|ogg)$' -print0 | sort -z | while read -d $'\0' AUDIO do echo `date` Converting File $AUDIO filename=$(basename -- "$AUDIO") extension="${filename##*.}" filename="${filename%.*}_speed" if [ ! -d "$OUTPUTDIR/$dir/" ]; then mkdir -p "$OUTPUTDIR/$dir/" fi if [ -f "$OUTPUTDIR/$dir$filename.$extension" ]; then echo `date` Skipping.. "$OUTPUTDIR/$dir$filename.$extension" exists already else if [[ "${extension,,}" != "mp3" ]] || [ "$USE_FFMPEG" == "true" ] ; then echo `date` Generating "$OUTPUTDIR/$dir$filename.$extension" with ffmpeg </dev/null $FFMPEG_COMMAND -i "$AUDIO" -v quiet -loglevel panic -filter:a "atempo=1.5" -vn "$OUTPUTDIR/$dir$filename.$extension" else echo `date` Generating "$OUTPUTDIR/$dir$filename.$extension" with sox # variant with sox to change speed and pitch #$SOX_COMMAND "$AUDIO" "$OUTPUTDIR/$dir$filename.$extension" speed 1.5 pitch -700 # variant with sox to change tempo $SOX_COMMAND "$AUDIO" "$OUTPUTDIR/$dir$filename.$extension" tempo 1.5 echo Copying ID3 Tag from original file $MID3CP_COMMAND "$AUDIO" "$OUTPUTDIR/$dir$filename.$extension" fi fi done |
Leave a Reply