Vorschlag: Cut & Join


#1

Hallo Florian, hallo alle anderen, :slight_smile:

hier ist ein Vorschlag für ein Feature, das ich gerne irgendwann einmal in einer zukünftigen Mp3tag-Version sehen würde. Das ist die Situation, vor der ich gelegentlich stehe, und bei der mich immer der Wunsch danach beschleicht :slight_smile: :

Wenn ich innerhalb der Mp3tag-Anzeige der Dateien in einem Verzeichnis mehrere Dateien eines Formats (egal, ob nun Musepack, MPEG4-AAC oder MP3) markiert habe und mir über die rechte Maustaste deren Kontextmenü anzeigen lasse, würde ich gerne ein "Cut & Join"-Feature haben.

So in etwa stelle ich mir das "Cut"-Feature vor:

  1. Innerhalb der Mp3tag-Anzeige des Verzeichnisinhaltes ist eine Datei markiert.
  2. Ich klicke die rechte Maustaste und wähle im daraufhin erscheinenden Kontextmenü "Cut" ("Trennen", "Couper" etc.)
  3. Es erscheint ein Dialog, in dem ich die Position der Schnitte und die Namen der Zieldateien bestimmen kann, und ob die Ausgangsdatei nach dem Trennen gelöscht werden soll.

Ähnliches würde für das "Join"-Feature gelten:

  1. Innerhalb der Mp3tag-Anzeige des Verzeichnisinhaltes sind mehrere Dateien markiert.
  2. Ich klicke die rechte Maustaste und wähle im daraufhin erscheinenden Kontextmenü "Join" ("Zusammenführen", "Joindre" etc.).
  3. Es erscheint ein Dialog, in dem ich den Namen der Zieldatei bestimmen kann, die Reihenfolge, in der die markierten Dateien zusammengeführt werden sollen und ob die Einzeldateien nach dem Zusammenführen in eine Datei gelöscht werden sollen.

Präventive "Disclaimer" (oder welchen neologistischen Anglizismus man immer im Deutschen heutzutage dafür verwendet ;-)):

  1. Natürlich bin ich mir bewußt, dass das nur - wenn überhaupt - mit Dateien gleichen Formats und gleicher Enkodierung zu machen ist.
  2. Ich habe Florians 'aktuelle Hinweise"-Post' in dieser Sektion des Forums gelesen und weiß, dass Mp3tag weder Player noch Audio-Editor sein oder werden soll und dass ein "Cut & Join"-Feature dem vielleicht nahe kommen würde. Allerdings geht es mir nur darum, Dateien ohne neues Enkodieren zu trennen oder zusammenzuführen, meiner naiven (Laien-)Vorstellung nach also die Frames von Dateien in Lossy-Audio-Formaten lediglich "hin- und herzuschieben" (eine Art von "Direct Stream Copy", wie VirtualDub-Nutzer sagen würden ;-)).
  3. Ich weiß, dass es dafür ein paar kleine Freeware-Tools gibt. Allerdings hat mir keines von ihnen wirklich zugesagt und ich würde gerne, was das Dateimanagement meiner Musiksammlung auf meinem Rechner anbelangt, "everything in one place" machen. Und das in Mp3tag, dessen GUI meiner Meinung nach das Beste und Übersichtlichste der Programme seiner Art ist. :slight_smile:
  4. Ich bin kein Programmierer, kann mir aber gut vorstellen, dass mein Vorschlag eine Höllenarbeit machen würde. - Vielleicht ein Vorschlag für die Wish-List von Mp3tag 3.0?

Viele Grüße,

petit prince


#2

Hallo petit prince,

ich würde mir eine solche Funktion auch wünschen (und mit mir sicher noch viele andere).

Leider ist es ohne Implementierung des jeweiligen Audio-Formats nicht möglich ein solches Feature zu realisieren, was eine Einarbeitung in die verschiedenen Audio-Codecs erforden würde.

Des weiteren ist das Ganze nicht bei allen Codecs möglich (dass es mit MP3 und Vorbis funktioniert ist erwiesen), da es z.B. bei Musepack in der aktuellen SV7 cross-frame Abhängigkeiten gibt, die ein Schneiden von Musepack-Dateien unmöglich machen.

Siehe dazu auch die Diskussion auf AudioHQ in der es um ein Cut&Join-Plugin für foobar2000 geht.

Viele Grüße,
~ Florian


#3

Mit Vorbis kenne ich mich nicht so gut aus, aber bei MP3 müsste man noch eines bedenken, wenn man perfekte Schnitte haben mag: Bit Reservoir.

Wenn eine MP3 Datei über ein Bit Reservoir verfügt, enthält der main_data_begin Pointer die Position, an der sich die für den aktuellen Frame relevanten Informationen befinden (in ancillary_data der vorherigen Frames). Um die ersten paar Frames nicht ungültig zu machen, muss man entweder die Framegröße erhöhen (z.B. auf 320 kbps) und die Daten aus den vorherigen Frames in den vergrößerten Frames speichern (wieder in ancillary_data) und die main_data_begin Pointer ändern, oder, wenn die Framegröße schon 320 kbps entspricht, leere Frames am Anfang der Datei erzeugen und ancillary_data dort kopieren (natürlich, main_data_begin bei Bedarf modifizieren).

Ein weiteres Problem stellen VBR Dateien dar. Erstens ist eine genaue Zeitangabe nur dann möglich, wenn man die Größe aller Frames hat, und zweitens, muss man Xing oder VBRI Header nach einem Split so modifizieren, dass die Positionstabelle (TOC), Frameanzahl und Audiogröße mit der neuen Datei übereinstimmen.

Die meisten (wenn nicht alle) Tools, die MP3s splitten, achten auf diese Details gar nicht. Die meisten Player können zwar solche MP3 Dateien noch abspielen, ältere Software (oder welche, die sich strikt an ISO Standards hält) verweigern dann den Dienst.


#4

Hallo Florian und Sebastian,

vielen Dank für Eure schnellen Antworten! - Ich sehe schon, es ist wieder einmal alles etwas komplizierter, als ich es mir vorgestellt hatte. :slight_smile:

@ Sebastian: Ergeben sich die Probleme, die Du oben erklärst (vielen Dank!), in gleicher Komplexität auch beim Zusammenführen von MP3s? Das wäre mir nämlich wesentlich wichtiger als das Trennen gewesen ...

Viele Grüße,

petit prince


#5

Soweit ich weiß, ist es nur wichtig, dass beim Zusammenführen die ganze Datei die selbe Sampling Rate (z.B. 44100 Hz) und den selben Channel Mode (z.B. Mono, Stereo, Joint Stereo) hat. Bit Rate und Joint Stereo Mode (Mid/Side Stereo, Simple Stereo, Intensity Stereo und Mixed Stereo) dürfen sich ändern. Wenn die Bit Rate sich ändern soll (wenn man z.B. 128 kbps und 160 kbps zusammenführt), wäre es praktisch, einen Xing Header zu erzeugen.

Edit: Wenn man zwei oder mehrere VBR Dateien zusammenführt, sollte man die Xing Header aus den Dateien entfernen und am Ende einen für die ganze Datei erzeugen.

Wenn du mehrere MP3s zusammenführst, wirst du eine Lücke zwischen den einzelnen Tracks hören, da MP3 von Natur aus nicht gapless ist.


#6

Vielen Dank, Sebastian! :slight_smile: - Da alles wirklich ziemlich komplex ist, lassen wir uns meinen Vorschlag am besten wieder vergessen.

petit prince


#7

Vielleicht hilft das weiter: http://mpesch3.de1.cc/#mp3dc :wink:


#8

Vielen Dank! Das werde ich mir bei Gelegenheit einmal ansehen.

Viele Grüße,

petit prince


#9

Zum Thema Zusammenführen von MP3-Dateien:

Es sollte doch wohl nicht aufwendig sein, mehrere MP3-Dateien, welche die selben Parameter besitzen, zu einer einzigen MP3-Datei zusammenzuführen: Z.B. wird bereits das Ergebnis eines einfachen concat von WMP komplett abgespielt.

Problematisch bei einem einfachen concat ist, daß Abspielprogramme nur die Laufzeitinformation aus dem ersten gefundenen Header berücksichtigen, wodurch Probleme entstehen können.

Ich wage dennoch zu behaupten, daß ein concat der Audiodaten der MP3-Dateien einfach ist. Die Herausforderung liegt m.E. lediglich darin, für die Gesamt-MP3-Datei einen korrekten Header zu erstellen. Die Erstellung der Tags wiederum kann dem Benutzer überlassen werden.

Gewünschte Anwendung: Zusammenfassen von Ausschnitten aus Hörbüchern zu Kapiteln.


#10

Das tolle an mp3DirectCut ist auch, dass beim exportieren die mp3-Dateien auch repariert werden!
Leider gehen aber dabei auch alle Tags verloren :frowning:

Wer foobar2000 hat, kann aber die Tags wieder problemlos wiederherstellen :wink: