MP3s zusammenführen / mergen mit dem copy Befehl und der csid3lib


Manchmal sind es die kleinen Dinge über die man sich als Softwareentwickler freut. So z.B. am letzten Wochenende an dem ich beschlossen hatte ein paar alte Hörspiele die immer auf mehrere MP3 Dateien aufgeteilt waren zu einer Datei zusammenzufügen und zumindest den Titel und das Album entsprechend einzutragen, denn der Ordnername in dem sich die Dateien befanden war einheitlich benannt aber die Dateien darin meist nur mit 01 – XX. Da es sich bei meinem Vorhaben nicht nur um ein paar Hörspiele handelte habe ich im Netz eigentlich nach einer Library gesucht mit der ich MP3 Dateien zusammenführen kann oder nach einem passenden Programm.

Ein Programm findet man schnell, nur muss man hier meist alles per Hand einstellen und dafür waren es mir dann doch zu viele Ordner. Dann habe ich es fast nicht glauben können das man mit der normalen Windows Kommandozeile und dem “copy” Befehl auch MP3 Dateien zusammenfügen kann.

copy /b “c:\Temp1.mp3” + “c:\Temp2.mp3” + “c:\Temp3.mp3” “c:\Temp\merged.mp3”

Bitte beachten das die “+” Zeichen auch benötigt werden, denn hier wird angegeben welche Dateien zusammengeführt werden sollen und beim letzten Pfad wird kein “+” mehr verwendet denn hier steht die Zieldatei die erstellt werden soll.

Aufgrund des einfachen Befehls gepaart mit einer Library (csid3lib) mit der man MP3 Tags setzen kann und einem Konsolenprogramm ging es dann sehr schnell um alle Hörspiele entsprechend zusammenzufügen. Der Download für die csid3lib enthält direkt eine fertige SLN die man mit VS öffnen kann und hier habe ich einfach ein Konsolenprogramm hinzugefügt mit dem folgenden Codeschnipsel.

  foreach (string directory in System.IO.Directory.GetDirectories("c:\\Temp\\Hoerspiele"))
            {
                string files = string.Empty;
                DirectoryInfo directoryInfo = new DirectoryInfo(directory);
                foreach (string file in System.IO.Directory.GetFiles(directory))
                {
                    FileInfo info = new FileInfo(file);
                    files += "\"" + file + "\" + ";
                }

                files = files.Trim().TrimEnd('+');
                string newFile = "c:\\Temp\\Merged\\" + directoryInfo.Name + ".mp3";

                strCmdText = "copy /b " + files + " \"c:\\Temp\\Merged\\" + directoryInfo.Name + ".mp3\"";
                System.Diagnostics.ProcessStartInfo procStartInfo =
                    new System.Diagnostics.ProcessStartInfo("cmd", "/c " + strCmdText);

                procStartInfo.RedirectStandardOutput = true;
                procStartInfo.UseShellExecute = false;
                procStartInfo.CreateNoWindow = true;
                System.Diagnostics.Process proc = new System.Diagnostics.Process();
                proc.StartInfo = procStartInfo;
                proc.Start();
                string result = proc.StandardOutput.ReadToEnd();
                Console.WriteLine(result);

                var mp3File = new Mp3File(newFile);
                mp3File.TagHandler.Artist = "SelfRipped";
                mp3File.TagHandler.Title = directoryInfo.Name;
                mp3File.TagHandler.Album = directoryInfo.Name;
                mp3File.Update();
            }

Vielleicht nicht “schön” aber dafür sehr funktionell und für die einmalige Verwendung sehr gut geeignet und nicht overengineered.

ACHTUNG: Auf jeden fall manuell überprüfen ob das zusammenfügen auch geklappt hat, d.h. ob die Gesamtlänge des Titels stimmt. Denn es wird leider kein Fehler angezeigt wenn mit Copy etwas nicht “geklappt” hat sondern dann ist die Datei zwar 130MB groß aber nur 3 Minuten lang statt 50 Minuten. Ist bei mir bei einigen Dateien vorgekommen, diese habe ich dann manuell mit einem Programm mergen müssen.

Advertisements

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s