Es fällt mir schwer herauszufinden, wie man eine Datei schneidet avconv
. Hier ist der Befehl, den ich benutze:
avconv -ss 52:13:49 -t 01:13:52 -i RR119Accessibility.wav RR119Accessibility-2.wav
Aber es funktioniert nicht. Als Ergebnis erhalte ich die gesamte Datei. Nun, fast die ganze Datei. Irgendwie hat die resultierende Datei Dauer 1:16:31
statt 1:17:23
. Ich glaube auch, dass ich diesen Befehl auf jede mögliche Weise ausgeführt habe: mit -ss
und -t
nach -i
, mit -t
Angabe des Endpunkts, mit MP3-Dateien, mit Angabe des Audio-Codecs, mit ffmpeg
. Mache ich es falsch
UPD Dank bodhi.zazen
dieser Arbeit (ich habe den Offset und die Dauer korrigiert, die von gemeldet wurden mp3splt-gtk
, sie waren aus irgendeinem Grund falsch und das Ziel war es, MP3-Dateien zu schneiden)
avconv -i RR119Accessibility.mp3 -ss 00:52:08 -t 00:01:08 RR119Accessibility-2.mp3
Das geht aber nicht:
avconv -ss 00:52:08 -t 00:01:08 -i RR119Accessibility.mp3 RR119Accessibility-2.mp3
Die resultierende Datei beginnt um 00:52:08 Uhr und reicht bis zum Ende der Originaldatei. Ich dachte -ss
und -t
beziehe mich auf die Eingabedatei, wenn vorher angegeben -i
. Und um die Datei anders auszugeben. Könnte jemand das erklären?
avconv
weilubuntu
‚sffmpeg
sagt , dass es veraltet ist.Antworten:
Ich denke, das ursprüngliche Problem war die Formatierung Ihres Zeitstempels.
Das Format ist HH: MM: SS
Ich bin nicht sicher, ob ich Ihre Frage zur Reihenfolge der Optionen verstehe. Ich denke nicht, dass es wichtig ist, solange auf -i der Name der Eingabedatei folgt und -ss HH: MM: SS auf -t HH: MM: SS folgt
Das -ss HH: MM: SS ist der Startpunkt und -t HH: MM: SS ist die Dauer
Also würde -ss 00:01:00 -t 00:05:00 bei der 1-Minuten-Marke beginnen und 5 Minuten lang laufen.
Auf meinem System spielt bei ffmpeg die Reihenfolge keine Rolle (Sie können die Zeit oder die Eingabedatei in beliebiger Reihenfolge angeben, solange auf -ss die Dauer (-t) folgt.)
quelle
ffmpeg -i -ss -t
,ffmpeg -ss -t -i
,avconv -i -ss -t
,avconv -ss -t -i
), nur die letzten nicht funktioniert wie erwartet. Das heißt, anstatt [Offset: Offset + angegebene Dauer] zu erhalten, erhalte ich [Offset: Originaldauer] (wenn dies die Sache klarstellt). Wenn Sie irgendwelche Ideen haben, bin ich ganz Ohr :)avconv -ss ... -i ... -t ... ...
-acodec copy
eine Stream-Kopie hinzuzufügen , anstatt sie neu zu codieren. Dies vermeidet eine Neucodierung und vermeidet daher das Potenzial eines Qualitätsverlusts. Die Platzierung von-ss
kann das Verhalten dieser Option ändern (abhängig von mehreren Faktoren).-t
ist eine Ausgabeoption, daher sollte die Platzierung keine Rolle spielen, solange sie als Ausgabeoption (nachher-i
) verwendet wird. Es gibt auch die-to
Option. (Keiner meiner Kommentare gilt möglicherweise für libavs Junk).Das Problem ergibt sich aus der unterschiedlichen Bedeutung der
-ss
Abhängigkeit von der Position in der Befehlszeile. Es ist eine Übertragung aus den Tagen, alsavconv
es noch Teil desffmpeg
Projekts war, und ich glaube, dass es in den neueren Versionen behoben wird.In den alten Tagen, wenn Sie so etwas sagten
Was Sie meinten, war "Springen Sie zur 5-Sekunden-Marke in der Datei und beginnen Sie dort zu lesen".
Aber wenn du gesagt hast
Sie meinten "Öffnen Sie die Eingabedatei und überspringen Sie alle Daten bis zur Fünf-Sekunden-Marke".
Wie Sie verstehen können, schlägt der erste Ansatz tatsächlich ziemlich oft fehl, da Sie die Datei überspringen, ohne sie zu lesen. Es funktioniert nur bei Dateien mit Zeitstempeln, sodass Sie den Frame lesen und feststellen können, ob Sie bereits zu weit gegangen sind oder nicht.
Grundsätzlich funktionierte es in ffmpeg wie folgt: "Errate die Bitrate in der ersten Sekunde und gehe dann davon aus, dass alle anderen Sekunden gleich sind." Aber natürlich sind nicht alle Sekunden gleich, und wenn es sich um eine 52-stündige "Drift" handelt, kann der Fehler ziemlich groß sein.
Wenn Sie also die frühe Post-Split-Version von avconv verwenden, sollten Sie immer
-ss
nach der gelesenen Datei setzen . Aber in den neueren Versionen (nach meinem besten Wissen) wurde dieser Fehler behoben.quelle
Versuchen:
Die Optionen von ffmpeg und avconv sind positionsabhängig.
In Ihrem Beispiel beginnt ffmpeg mit dem Lesen der Datei und der Ausgabe von timestamp -ss
(was ffmpeg auf meinem System gut macht und avconv nicht, nennen wir es eine Art Regression).
In dem Beispiel, das ich hier gegeben habe, sucht avconv (oder auch ffmpeg) zuerst den richtigen Versatz und beginnt dann mit dem Lesen und Ausgeben. Dies funktioniert für beide.
Weitere Dokumentation zu avconv finden Sie unter http://libav.org. Diese Jungs haben ffmpeg abgeschaltet und sind auch für die extrem alte ffmpeg-Version in Ubuntu verantwortlich.
Das REAL ffmpeg befindet sich nicht in den Ubuntu-Repositories, sondern in einem PPA:
ppa: jon-Severinsson / ffmpeg
Weitere Dokumentation zu ffmpeg finden Sie unter http://ffmpeg.org
Betrachten Sie die Manpages als veraltet
quelle
libav
,ffmpeg
dass es veraltet ist. Für Details, siehe diese Fragen