Wie kann man MP3-Dateien mit `ffmpeg` zuschneiden?

10

Hier ist ein Linux Audio MP3 Puzzle, das mich schon eine Weile nervt:

Wie schneide ich die ersten Sekunden einer MP3-Audiodatei ab? (Ich kann weder ffmpeg -ssmit dem Format 00:01 noch mit dem Format 1.000 arbeiten.)

Um das zu tun, was ich will, greife ich bisher auf eine grafische Benutzeroberfläche zurück, die für eine einzelne Datei möglicherweise langsamer und für einen Stapel von Dateien definitiv langsamer ist.

Mark Hudson
quelle
1
Ein Update. Später bin ich auf die Tatsache gestoßen, dass ffmpeg sehr wählerisch in Bezug auf das Zeitformat --ss ist, und ich konnte die ersten 9 Sekunden am einfachsten abschneiden, indem ich beispielsweise -ss 00:00:09 angegeben habe (beachten Sie, dass alles benötigt wird 3 Zahlen im Format hh: mm: ss) Die von mir verwendete Version ist möglicherweise alt ... FFmpeg-Version SVN-r18709, Copyright (c) 2000-2009 Fabrice Bellard, et al.
Mark Hudson

Antworten:

5

Für die Bearbeitung von MP3s unter Linux würde ich Sox empfehlen . Es hat einen einfach zu verwendenden trimEffekt, der man soxgenau das tut, wonach Sie fragen (siehe Daten - Suche (drücken /) nach " Trimmstart "). Beispiel:

sox input.mp3 output.mp3 trim 1 5

Sie haben es nicht erwähnt, aber wenn Sie nur die Stille am Anfang von Dateien entfernen möchten, finden Sie den silenceEffekt viel nützlicher ( man soxsuchen Sie nach "Überperioden").

rozcietrzewiacz
quelle
Danke, super: es hat funktioniert. Der trimEinfachheit halber habe ich das verwendet . Der einzige Wermutstropfen war - sox FAIL formats: can't open output file 'blah.mp3': SoX was compiled without MP3 encoding supportalso, geben Sie ffmpeg wieder ein: /
Mark Hudson
Das scheint ungewöhnlich. Auf meinem Computer funktioniert es problemlos mit MP3s. Es ist eine Frage der Build-Time-Konfiguration. Wie haben Sie es installiert?
Rozcietrzewiacz
@rozcietrzewiacz, wenn Sie Sox aus einem Distributions-Repository installieren, erhalten Sie höchstwahrscheinlich Sox ohne MP3-Unterstützung (aufgrund von Lizenzproblemen). Zum Beispiel auf Fedora 17:no handler for file extension mp3
Maxschlepzig
4

Sie können versuchen, mp3splt zu verwenden , das MP3- und Ogg-Dateien aufteilen kann und den Vorteil hat, dass die Datei nicht neu codiert wird, wodurch Qualitätsverluste vermieden werden.


quelle
1
Ich mag das; Vielen Dank. Es ist einfach und bietet dennoch viele Optionen ... Zum Beispiel: Hier ist der Befehl, den ich gerade verwendet habe, der die Zwischenzeiten zum Dateinamen hinzufügt: mp3splt "$file" 4.12 27.55.7... Er ermöglicht die benutzerdefinierte Formatierung von Ausgabenamen und mehrere Teilungspunkte.
Peter.O
1

Stellen Sie sicher, dass Ihre Zeitangaben mit Stunden beginnen.

So zitieren Sie die ffmpeg-Manpage :

Die Position kann entweder in Sekunden oder in der Form "hh: mm: ss [.xxx]" angegeben werden

Das heißt, wenn Sie die 2. Syntax wählen, ist nur der .xxxTeil optional. Andernfalls könnte ffmpeg es als Sekunden falsch analysieren.

Gleiches gilt für die Dauer:

Die Dauer kann eine Zahl in Sekunden oder in "hh: mm: ss [.xxx]" sein.

Eine weitere Gefahr ist die Reihenfolge der ffmpeg-Argumente (z. B. müssen die Optionen -ss/ -tfür eine Eingabedatei vor der -iOption stehen).

Beispiel

$ wget http://traffic.libsyn.com/twiv/TWiV179.mp3
$ ffmpeg -ss 1:05:59.3 -t 00:02:03.9 -i TWiV179.mp3 -acodec copy \
     what_is_a_hmm_twiv179.mp3

Mit der Spezifikation -ss 1:05:59.3 -t 2:03.9würden Sie ein anderes Ergebnis erhalten (dh ein 2 Sekunden langes Stück).

(Getestet auf Fedora 17 mit ffmpeg Version 0.10.7.)

maxschlepzig
quelle