Schneiden Sie zwei Abschnitte aus dem Stapel von MP3-Dateien

356
spoko

Ich habe einen Ordner mit mehreren hundert MP3-Dateien und möchte aus jeder Datei zwei Abschnitte ausschneiden. Es sind die gleichen Stellen in jeder Datei - von 0'00.00–0'03.81 und dann von 0'08.83–0'13.95.

Ich bin unter Windows 7, obwohl ich 8 oder 10 problemlos verwenden kann, wenn es hilft. Auch nicht zimperlich, an einer Kommandozeile zu arbeiten.

Irgendeine Idee, wie ich das erreichen kann?

0
Ich habe ein Programm namens mp3splt gesehen. Kommandozeilenverwendung is- mp3splt song.mp3 10.12 14.25 -o out.mp3 (Split song.mp3 beginnt mit 10min 12sec, endet mit 14min 25sec und speichert das MP3-Slice in einer neuen Datei namens out.mp3) "(https: //) superuser.com/questions/277678/how-to-cut-a-few-seconds-out-of-movie-file (wie in einem Kommentar von mir zu dieser Frage geschrieben) Wenn Sie es also mit einer Datei versuchen, Die Frage ist einfach, wie man das auf einen Stapel von Dateien anwendet, und wie ich das mache, ist "dir / s / b * .mp3> filelist.txt" barlop vor 6 Jahren 0
Dann (eher wie das alte Abprallen der Eingabeaufforderungsmethode, aber ohne die Eingabeaufforderung abzubrechen), würde ich einen Texteditor verwenden, der Regex unterstützt, um diese Dateinamen in den gewünschten Befehl zu konvertieren. B. am Anfang und am Ende jeder Zeile, so dass jede Zeile ein Befehl für diese Datei ist. Und benennen Sie die Datei dann in bat um und führen Sie sie aus. Die andere Option ist für das Einfügen einer Liste von Dateien mit / f, die jeden Befehl generiert. Versuchen Sie aber zuerst Schritt 1, das ist mp3splt für eine Datei. barlop vor 6 Jahren 0
Ich kann sehen, wie ich damit den ersten Abschnitt ausschneiden würde. Aber wie soll ich damit die Sekunde machen, wo ich eigentlich die Datei in die Abschnitte einteile und nur die Sekunde entferne? Der Befehl, den Sie gegeben haben, scheint ein Stück ausschneiden zu wollen und nur dieses beizubehalten, anstatt ein Stück auszuschneiden und es zu entfernen. Ich habe auf der Manpage nach mp3splt gesucht und sehe nicht, was ich brauche. spoko vor 6 Jahren 0
Ich denke, nachdem Sie eine Datei aufgeteilt haben, können Sie sie wieder zusammenfügen, ohne die Teile, die Sie nicht möchten. https://askubuntu.com/questions/20507/concatenating-several-mp3-files-into-one-mp3 und https://stackoverflow.com/questions/62618/what-is-the-best-way-to- merge-mp3-dateien barlop vor 6 Jahren 0
es gibt auch ffmpeg, aber manchmal, wenn nicht sicher ist, welche spezifischen Parameter zu übergeben sind, kann es schwierig sein, sogar als hier üblich! https://stackoverflow.com/questions/43728169/how-to-remove-a-section-from-an-audio-and-der-rest-the-rest-mit-ffmpeg barlop vor 6 Jahren 1
@barlop __ffmpeg__ stellte sich als das richtige Werkzeug für den Job heraus, aber ich habe nicht die in der Antwort beschriebene Methode verwendet. Diese Methode bedeutet Umcodierung, und ich wollte das vermeiden. Ich habe einen etwas kludgeren Weg gefunden, der in meiner Antwort unten beschrieben wird. spoko vor 6 Jahren 0

1 Antwort auf die Frage

1
spoko

Am Ende habe ich herausgefunden, wie man das mit ffmpeg macht. Falls sich irgendjemand anderes an einem bestimmten Punkt wundert, hier ist wie.

Übrigens: Dies sind 216 Dateien, die sich alle in einem Ordner befinden und ein Teil des Dateinamens ist eine fortlaufende Nummer. Das machte das DOS-Looping etwas einfacher.

Als Erstes habe ich eine reine Textdatei mit dem Namen temps.txt erstellt, die nur diese beiden Zeilen enthält:

Datei temp1.mp3
Datei temp2.mp3

Sie werden sehen, wofür das in einer Minute ist.

Dann habe ich eine Batchdatei geschrieben, die alle Dateien im Verzeichnis durchläuft (basierend auf der fortlaufenden Nummerierung oben) und jeweils zwei ffmpeg-Vorgänge ausführt:

FOR / L %% i IN (1,1216) DO (
  ffmpeg.exe -y -i OriginalDatei %% i.mp3 -ss 00: 03.81 -bis 00: 08.83 -acodec-Kopie "temp1.mp3" -ss 00: 13,95 -acodec kopiert "temp2.mp3"
  ffmpeg.exe -y -safe 0 -f concat -i temps.txt -c kopiert NewFile %% i.mp3
)

Bei der ersten Operation werden die beiden gewünschten Segmente erfasst und in die Dateien temp1.mp3 und temp2.mp3 kopiert (ich habe diese beiden Dateinamen immer wieder verwendet). Mit ffmpeg können Sie beide Abschnitte in einer Befehlszeile isolieren, was schön ist. Sie können auch beachten, dass der zweite Teil nur den -ssZeitstempel und keinen -toStempel hat. Dadurch kann das Ende der Datei als zweiter Zeitstempel verwendet werden.

Der zweite Vorgang weist ffmpeg an, in der Datei temps.txt nachzuschauen und die beiden dort aufgeführten Dateien zu verketten. Durch die Wiederverwendung der temporären Dateinamen konnte ich einfach die statische temps.txt-Datei haben, die ich oben erstellt habe.

Ich habe dies ziemlich unverblümt geschrieben (die Anzahl der Dateien im Verzeichnis fest codieren, Temp-Dateien wiederverwenden und das -y- Flag in den Befehlszeilen verwenden), weil ich genau wusste, mit was ich arbeiten musste, und ich hatte eine Sicherungskopie davon sowieso. Wenn Sie dies erneut verwenden, möchten Sie vielleicht etwas empfindlicher mit diesen Dingen umgehen.

Ich habe auch alle Metadaten in diesem Prozess verloren. Es gibt wahrscheinlich einen einfachen Weg, das zu bewahren, aber ich habe mir nicht die Mühe gemacht, es herauszufinden. Einfach genug für mich, es einfach auf einmal in die neuen Dateien einzufügen (mit MP3Tag, einem der besten Dienstprogramme aller Zeiten).

So haben Sie es.

Übrigens, einige Links, die mir dabei geholfen haben, das herauszufinden:

  • Ich habe mit ffmpeg angefangen - Audiodatei kürzen, ohne neu zu kodieren
  • Dann, um mich mit den Besonderheiten zu beschäftigen, auf die ich in der ffmpeg-Dokumentation verwiesen habe
  • Für die Verkettung erhielt ich viel von dieser Antwort auf eine Stack Overflow-Frage. Die Frage bezog sich auf Video, das viel komplizierter ist, aber diese Antwort verriet mir alles, was ich über Audio wissen musste. Ich habe insbesondere die zweite Methode verwendet, die in dieser Antwort beschrieben wird.
  • Und schließlich habe ich dieses nicht wirklich verwendet, aber es gibt weitere nützliche Informationen zum Befehl concat in diesem Wiki - einschließlich Anweisungen zum automatischen Generieren einer Listendatei unter Windows oder Bash.

(Danke @barlop für den Vorschlag, diese hinzuzufügen.)

Beeindruckend. Übrigens, wenn Sie bestimmte Links für die Beantwortung dieser Antwort gefunden haben, lohnt es sich, diese hinzuzufügen barlop vor 6 Jahren 0