Si vous devez retarder la vidéo de 3,84 secondes, utilisez une commande comme celle-ci:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"
Si vous devez retarder l'audio de 3,84 secondes, utilisez une commande comme celle-ci:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"
Assurez-vous que votre version de ffmpeg n’est pas trop ancienne. Une version plus récente que 2012 suffira.
Explication
-itsoffset 3.84 -i "movie.mp4"
Décalage les horodatages de tous les flux de 3,84 secondes dans le fichier d'entrée qui suit l'option (movie.mp4).
-map 1:v -map 0:a
Prend le flux vidéo de la deuxième entrée (retardée) et le flux audio de la première entrée - les deux entrées peuvent bien sûr être le même fichier.
Une explication plus détaillée peut être trouvée ici:
http://alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/
ffprobe.exe "input_file.mp4"
ouffmpeg.exe -i "input_file.mp4"
Supposons que l’index du flux audio à retarder soit égal à 2 (c’est-à-dire le troisième flux) et que l’entrée retardée soit le deuxième (comme dans mon exemple). Pour retarder uniquement le troisième flux, prenez tous les autres flux de la première entrée et uniquement le flux audio de la deuxième entrée (retardée):-map 0:0 -map 0:1 -map 1:2
-map 1:m:language:eng
Cependant, gardez à l'esprit qu'il sélectionnera tous les flux satisfaisant au critère, y compris éventuellement plusieurs flux audio et / ou sous-titres. Vous pouvez trouver plus d'informations dans stackoverflow.com/questions/46769419/…-c copy
peut être utilisé au lieu de-vcodec copy -acodec copy
, etitsoffset
ne concerne que la vidéo, alors peut - être cela fonctionnerait même ?:ffmpeg -i "movie.mp4" -itsoffset 3.84 -c copy "movie-video-delayed.mp4"
et de retarder simplement au lieu de l'audio ajouter un signe négatif à la durée:-3.84
.Rendre le premier silence audio:
Puis concattez les fichiers:
la source