ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

MP3 Zusammenführen

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Möchte man viele einzelne MP3-Dateien zu einer einzigen zusammenführen, z.B. weil eine Hörspiel-CD in 20 einzelnen Tracks vorliegt, man das Hörspiel aber lieber in einer einzelnen Datei sichern möchte, so geht dies in der Konsole recht einfach. Benötigt werden die Pakete avconv und libid3-3.8.3-dev

Pakete installieren

Die benötigten Pakete installieren [1]:

  • libav-tools

  • libid3-3.8.3-dev (universe )

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install libav-tools libid3-3.8.3-dev 

sudo aptitude install libav-tools libid3-3.8.3-dev 

MP3-Dateien zusammenführen

Zunächst wechselt man in das Verzeichnis, in welchem die einzelnen MP3-Dateien liegen. In diesem Beispiel nehmen wir an, dass vier Dateien existieren, die Track1.mp3 - Track4.mp3 heißen.

Im Terminal [2] gibt man ein:

cat Track1.mp3 Track2 Track3.mp3 Track4.mp3 > alle.mp3 

Hierdurch werden die vier Tracks in der Datei alle.mp3 zusammengefasst. Fortgeschrittene Nutzer schreiben hierbei übrigens nicht jede Datei persönlich aus, sondern kürzen das Ganze wie folgt ab:

cat Track{1..4}.mp3 > alle.mp3 

Reparatur

Das Zusammenführen der Dateien zerschießt für gewöhnlich den Dateiheader, so dass die entstandene Datei z.B. nicht von iTunes abgespielt werden kann. Andere Player hingegen "denken", die Spieldauer der Gesamtdatei sei nur so lang, wie die der zuerst hinzugefügten (in unserem Beispiel Track1.mp3) .

Um diesen Fehler zu beheben, gibt man anschließend ein:

avconv -i alle.mp3 -acodec copy fertig.mp3
rm alle.mp3 

avconv "repariert" die Datei und speichert das Ergebnis als fertig.mp3 ab. Anschließend wird die nicht mehr benötigte Datei alle.mp3 gelöscht.

Jetzt kann man noch optional den ID3-Tag der Originaldatei in die neue Datei übertragen:

id3cp Track1.mp3 fertig.mp3 

Das Programm id3cp ist im Paket libid3-3.8.3-dev enthalten.

Die Datei fertig.mp3 ist nun fertig und bereit für die Musiksammlung.

zenity-Script

Wenn man nicht ständig diese Befehlsfolge eingeben möchte, kann man sich ein entsprechendes zenity-Script schreiben. Damit dieses funktioniert, muss das Paket Zenity installiert sein:

  • zenity

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install zenity 

sudo aptitude install zenity 

Jetzt legt man eine neue Datei an, die z.B. mp3join.sh genannt wird, und gibt ihr mit einem Editor [3] folgenden Inhalt:

 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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#! /bin/bash
#
# Dieses sehr einfache Script zum zusammenfuehren mehrerer MP3-Dateien in 
# eine einzige benötigt die Pakete "libav-tools" und "libid3-3.8.3-dev"
# Unter UBUNTU kann man diese wie folgt nachinstallieren:
# sudo apt-get install libav-tools libid3-3.8.3-dev 
#
# Quelldateien werden ausgewaehlt und in die Variable QUELLE geschrieben
QUELLE=$(zenity --file-selection --text "Welche Dateien sollen verknüpft werden?" --title "Quelldateien auswählen" --multiple)
#
#
# Hat der User wirklich Dateien angegeben?
if [ !$QUELLE ]; then
	echo "Nichts ausgewaehlt... breche ab..."
	exit 1;
fi

ZIEL=$(zenity --entry --text "Bitte den Namen und vollständigen Pfad der Zieldatei angeben" --entry-text="Desktop/Ziel.mp3")
touch "${ZIEL}"

#
#
# Der Seperator (ist hier standardmaessig "|") wird in IFS gespeichert
IFS="|"
#
#
(
# Überprüfe, ob /tmp/tmp.mp3 existiert
# wenn ja, dann lösche sie...
echo "10"
echo "# Vorbereitung..."
if [ -f /tmp/tmp.mp3 ]; then
	rm /tmp/tmp.mp3
fi
#
# Hilfsdatei wird angelegt.
touch /tmp/tmp.mp3
echo "30"
echo "# Erzeuge neue Datei..."
# Alle Dateien per cat miteinander verbinden
for arg in ${QUELLE}
	do echo "${arg}"
	cat /tmp/tmp.mp3 "${arg}" > /tmp/tmp2.mp3
	rm /tmp/tmp.mp3
	mv /tmp/tmp2.mp3 /tmp/tmp.mp3
done
#
#
#
#
echo "60"
echo "# Repariere Datei-Header..."
# repariere Datei-Header und speichere das Endergebnis nach
# ~/Desktop/mp3Join-Ziel.mp3
avconv -i /tmp/tmp.mp3 -acodec copy ~/Desktop/mp3Join-Ziel.mp3
#
echo "80"
echo "# Speichere Ziel-Datei..."
mv ~/Desktop/mp3Join-Ziel.mp3 "$ZIEL"

echo "90"
echo "# Räume auf..."
# lösche Hilfsdatei
rm /tmp/tmp.mp3
#
#
if [ -f "${ZIEL}" ]; then
	echo "100"
	echo "# Fertig!"
else
	echo "99"
	echo "# Keine Schreibberechtigung! Datei konnte nicht angelegt werden!"
fi
)|zenity --progress --text="Vorgang wird bearbeitet" --percentage=0
#
exit 0;

Das Script muss nun noch ausführbar gemacht werden:

chmod u+x mp3join.sh 

Jetzt kann das Script gestartet werden per

./mp3join.sh 

Wenn das Script startet, öffnet sich ein Dateifenster, in welchem man die einzelnen MP3-Dateien auswählen kann. Per Klick auf "OK" werden die Dateien zusammengeführt, der Header wird repariert, und das Ergebnis auf dem Desktop als mp3Join-Ziel.mp3 gespeichert.

Einen Starter anlegen

Um die Verwendung zu erleichtern, legt man sich noch einen Starter entweder auf dem Desktop oder im Panel an. Dies geht über Rechtsklick rechte Maustaste -> "Starter anlegen..." bzw. Rechtsklick rechte Maustaste -> "Zum Panel hinzufügen... -> Benutzerdefinierter Anwendungsstarter". Dort macht man folgende Angaben:

Name: mp3join
Kommentar: Fügt mehrere MP3-Dateien zusammen
Befehl: /Pfad/zu/mp3join.sh
Typ: Anwendung

ubuntuusers.local › WikiSkripteMP3 Zusammenführen