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 -ss
Zeitstempel und keinen -to
Stempel 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.)