Ich benutze diesen Befehl, um ein Segment aus einem Video von der Kommandozeile auszuschneiden
ffmpeg -i %1 -vcodec copy -acodec copy -ss %2 -t %3 %~n1_cut%~x1
und ich nenne es wie
cut.bat video.mp4 001:23:45:678 10
und wie erwartet bekomme ich eine video_cut.mp4 mit 10 Sekunden des Originalvideos. Das Problem ist, dass einige Sekunden der resultierenden Datei ein schwarzer Bildschirm mit Audio sind. Warum passiert das und wie behebe ich das?
%~n1
erweitert% 1 zu einem Dateinamen oder, wenn nur ein Pfad vorhanden ist (ohne nachgestellten Backslash) - der letzte Ordner in diesem Pfad und%~x1
erweitert% 1 nur zu einer Dateierweiterung - .txt source: superuser.com/questions/ 224416 /…Antworten:
Die meisten Videos verwenden Codecs, die eine zeitliche Komprimierung durchführen. Daher kann ein bestimmter Schnittpunkt davon abhängen, dass Frames vor (und nach) diesem Schnittpunkt korrekt decodiert werden. Wenn Sie also ffmpeg zum Trimmen von Videos und zum Verwenden des
copy
Modus verwenden, muss ffmpeg alle Frames vor und nach dem zugeschnittenen Segment einschließen, die zum korrekten Dekodieren des Segments erforderlich sind.Sie haben also zwei Möglichkeiten: Verwenden Sie den Kopiermodus, stellen Sie jedoch einen Schalter ein, mit dem alle Player diese Dateien korrekt abspielen können
(Dies führt wahrscheinlich zu einer Ausgabe, die vor Ihrem Schnittpunkt beginnt.)
oder codieren Sie die Streams neu
quelle
-t
Option angegeben.%
das? Ich habe versucht, ffmpeg.org/ffmpeg.html zu durchsuchen, aber ich kann die Verwendung nicht finden.-ss
und-t
vorher verwendet-i
und es hat funktioniert, vorher habe ich nur-ss
vorher-i
und-t
danach gesetzt, also hat es nicht funktioniert.https://github.com/mifi/lossless-cut/pull/13
Wenn ich ffmpeg mit den Argumenten in dieser Reihenfolge -i ... -ss ... -t ... ausführe, wird eine Videodatei erstellt, die einige Sekunden lang kein Video enthält. (Soweit ich das verstehen kann, liegt das daran, dass kein Keyframe gesucht wird?)
Wenn ich die Reihenfolge in -ss ... -i ... -t ... ändere, werden die resultierenden geschnittenen Videos ordnungsgemäß abgespielt.
Meine
ffmpeg -version
quelle
-ss
vor ,-i
aber es hat nicht auf meine mp4 - Datei zu arbeiten.