Um die Antwort von Michael Madsens ein wenig zu ergänzen:
Ich habe eine der folgenden Methoden zum Trimmen meiner Audiodateien für zufriedenstellend befunden:
ffmpeg -ss
<Startposition> -t
<Laufzeit> -i inputfile -c:a copy outputfile
ffmpeg -ss
<Startposition> -i inputfile -t
<Laufzeit> -c:a copy outputfile
Anmerkung: -acodec
ist ein Alias für codec:a
die auch als c:a
Wie in der Hauptoptionen FFMPEG-Dokumentation
-t duration (input/output)
- Bei Verwendung als Eingabeoption (vor -i) wird die Dauer der aus der Eingabedatei gelesenen Daten begrenzt.
- Bei Verwendung als Ausgabeoption (vor einer Ausgabe-URL) wird das Schreiben der Ausgabe gestoppt, wenn ihre Dauer duration erreicht.
-ss position (input/output)
- Wenn es als Eingabeoption (vor -i) verwendet wird, sucht es in dieser Eingabedatei nach der Position.
- Bei Verwendung als Ausgabeoption (vor einer Ausgabe-URL) wird die Eingabe dekodiert, aber verworfen, bis die Zeitstempel die Position erreichen.
duration
y position
folgen Sie den Zeit Dauer Syntax :
[-][HH:]MM:SS[.m...]
o [-]S+[.m...][s|ms|us]
Nebenbemerkung: Eine Antwort auf Wie man mit FFMPEG Pausen erkennt kann ebenfalls von Interesse sein.
Unterschiede zwischen Suche und Dauer als Input oder Output
Beachten Sie, dass es bei den meisten Formaten nicht möglich ist, exakt zu suchen, so dass ffmpeg den nächstgelegenen Suchpunkt vor der Position ansteuert. Wenn Transkodierung und -accurate_seek aktiviert ist (die Voreinstellung), wird dieses zusätzliche Segment zwischen dem Suchpunkt und der Position dekodiert und verworfen. Beim Kopieren von Streams oder wenn -noaccurate_seek verwendet wird, bleibt es erhalten.
Ich habe ein paar Tests mit der folgenden Datei durchgeführt:
Input #0, mp3, from 'test16s.mp3':
Duration: 00:00:16.20, start: 0.025057, bitrate: 128 kb/s
Stream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s
Ich habe die Ausgänge in Audacity im Vergleich zum Original abgeglichen und folgendes erhalten:
ffmpeg -ss 3 -t 5 -i test16s.mp3 -c:a copy out.mp3
- Start: 3s+00756Proben (3.017142857s)
- Ende: 8s+02062Samples (8.04675737s)
- Dauer: 5s+01306Samples (5.029614512s)
ffmpeg -ss 3 -i test16s.mp3 -t 5 -c:a copy out.mp3
- Start: 3s+00756Proben (3.017142857s)
- Ende: 8s+00910Samples (8.020634921s)
- Dauer: 5s+00154Samples (5.003492063s)
ffmpeg -i test16s.mp3 -ss 3 -t 5 -c:a copy out.mp3
- Warnung : Dadurch wurde eine Datei erzeugt, bei der einige mp3-Decoder beim Versuch, sie zu öffnen, eine Fehlermeldung ausgaben.
- Start: 2s+42184Samples (2,956553288s)
- Ende: 8s+01071Samples (8.024285714s)
- Dauer: 5s+02987Samples (5.067732426s)
ffmpeg -t 5 -i test16s.mp3 -ss 3 -c:a copy out.mp3
- Warnung : Dadurch wurde eine Datei erzeugt, bei der einige mp3-Decoder beim Versuch, sie zu öffnen, eine Fehlermeldung ausgaben.
- Start: 2s+42184Samples (2,956553288s)
- Ende: 5s+02043Samples (5.046326531s)
- Dauer : 2s+03959Samples (2.089773243)
Bei einem Versuch, den Suchsprung zu sehen, fand ich interessante Ergebnisse unter Verwendung von :
Dies wird mit einem Stream-Kopie Es scheint so, als ob die minimale Suchauflösung in meiner spezifischen Datei, (Audio: mp3, 44100 Hz, Stereo, fltp, 128 kb/s) war:
- Suchen Sie Schritt von : 1152 Proben, 26,122449 ms
- Suchlaufposition Fehler von bis zu 70 ms