Wenn Sie das Video um 3,84 Sekunden verzögern müssen , verwenden Sie einen Befehl wie diesen:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"
Wenn Sie Audio um 3,84 Sekunden verzögern müssen , verwenden Sie einen Befehl wie diesen:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"
Stellen Sie sicher, dass Ihr ffmpeg-Build nicht zu alt ist. Neuere Versionen als 2012 werden ausreichen.
Erläuterung
-itsoffset 3.84 -i "movie.mp4"
Versetzt die Zeitstempel aller Streams in der Eingabedatei nach der Option (movie.mp4) um 3,84 Sekunden .
-map 1:v -map 0:a
Nimmt den Videostream vom zweiten (verzögerten) Eingang und den Audiostream vom ersten Eingang - beide Eingänge können natürlich dieselbe Datei sein.
Eine ausführlichere Erklärung finden Sie hier:
http://alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/
ffprobe.exe "input_file.mp4"
oderffmpeg.exe -i "input_file.mp4"
Angenommen, der Index des zu verzögernden Audiostreams ist 2 (dh der dritte Stream) und der verzögerte Eingang ist der zweite (wie in meinem Beispiel). Um nur den dritten Stream zu verzögern, nehmen Sie alle anderen Streams vom ersten und nur den einen Audio-Stream vom zweiten (verzögerten) Eingang:-map 0:0 -map 0:1 -map 1:2
-map 1:m:language:eng
Aber bedenken Sie , dass es alle Streams wählen Erfüllung des Kriteriums, möglicherweise einschließlich mehrerer Audio- und / oder Untertitelströme. Weitere Informationen finden Sie unter stackoverflow.com/questions/46769419/…-c copy
kann anstelle verwendet werden-vcodec copy -acodec copy
, unditsoffset
wirkt sich nur auf Video, vielleicht würde dies die gleiche Arbeit ?:ffmpeg -i "movie.mp4" -itsoffset 3.84 -c copy "movie-video-delayed.mp4"
und die Audio zu verzögern , anstatt einfach ein negatives Vorzeichen auf die Dauer hinzufügen:-3.84
.Machen Sie die erste Audio-Stille:
Dann Concat-Dateien:
quelle