Musikdatei-Konvertierung von OGG nach MP3
Transcription
Musikdatei-Konvertierung von OGG nach MP3
Teil 20 - Shellskriptprogrammierung : Musikdatei-Konvertierung von OGG nach MP3 Aufgabenstellung: In einem gesonderten Verzeichnis befinden sich mehrere OGG-Dateien, die ins MP3-Format umgewandelt werden sollen. In diesem Quellverzeichnis dürfen sich keine WAV-Dateien befinden (s.u.). Dies ist nur dann sinnvoll, wenn der MP3-Player keine OGG-Dateien abspielen kann, da OGG eigentlich bezüglich der Kriterien Offenheit, Kompressionsgrad und Qualitätsverlust das "bessere" Format ist! Werkzeuge: oggdec lame mv sed normalizeaudio for i in ; do ; done Wandelt OGG in WAV um. Wandelt WAV in MP3 um. Verschiebt Dateien. Streameditor, bearbeitet Datenströme nach Mustern. Gleicht die Lautstärke mehrerer Musikdateien aneinander an. For-Schleife Analyse einer möglichen Lösung: 1. Erstelle mit einem einfachen Texteditor die folgende Textdatei und speichere sie unter ogg_2_mp3.sh . 2. Mache Sie anschließend mit dem Kommanodzeilen-Befehl chmod u+x ogg_2_mp3.sh ausführbar. 3. Starte nun von der Kommandozeile dieses selbst erstellte Programm mit dem Befehl ./ogg_2_mp3.sh #!/bin/bash mkdir neue_mp3_dateien echo "Ein neuer Ordner für die MP3Zieldateien wurde erstellt." for f in *.ogg ; do oggdec $f done echo "Die Konvertierung nach WAV ist abgeschlossen." for g in *.wav ; do lame h b 128 $g mv $g.mp3 neue_mp3_dateien/ done echo "Die Konvertierung nach MP3 ist abgeschlossen." echo "Die MP3Zieldateien wurden nach neue_mp3_dateien verschoben" cd neue_mp3_dateien for h in *.wav.mp3 ; do neuername=`echo "$h"| sed e 's/.wav.mp3$/.mp3/'` mv v $h $neuername done echo "Die Benennung der MP3Zieldateien wurde korrigiert." for i in *mp3 ; do normalizeaudio m $i done echo "Die Lautstärke der MP3Zieldateien wurde untereinander angeglichen." cd .. find . name "*.wav" | xargs rm echo "Alle im Ursprungsverzeichnis liegenden WAVDateien wurden gelöscht." 3. Welcher einfachere Befehl würde im letzten Schritt zum Löschen der WAV-Dateien ausreichen? 4. Was bedeutet die Option b des lame-Befehls? 5. Schreibe ein eigenes Skript ogg_2_mp3_eigen.sh mit der gleichen Funktionalität, welches die Zieldateien in einen neuen Ordner neue_mp3_dateien_eigen schreibt. Benutze wieder For-Schleifen und das Werkzeug ffmpeg mit den folgenden Optionen: ffmpeg i $f acodec mp3 b 128 $f.mp3 6. Schreibe ein eigenes Skript mp3_2_ogg.sh, welches den umgekehrten Umwandlungsschritt veranlasst. Benutze wieder For-Schleifen und das Werkzeug mp32ogg (ohne besondere Optionen). 7. Schreibe das Skript aus Aufgabe 6 viel kürzer als "Einzeiler" (plus Kopfzeile). Tipp: Benutze das * Zeichen!