Se você precisar atrasar o vídeo em 3,84 segundos, use um comando como este:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"
Se você precisar atrasar o áudio em 3,84 segundos, use um comando como este:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"
Certifique-se de que sua compilação ffmpeg não seja muito antiga, mais recente que 2012 será suficiente.
Explicação
-itsoffset 3.84 -i "movie.mp4"
Desloca os carimbos de data e hora de todos os fluxos em 3,84 segundos no arquivo de entrada que segue a opção (movie.mp4).
-map 1:v -map 0:a
Obtém fluxo de vídeo da segunda entrada (atrasada) e fluxo de áudio da primeira entrada - é claro que ambas as entradas podem ser o mesmo arquivo.
Uma explicação mais detalhada pode ser encontrada aqui:
http://alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/
ffprobe.exe "input_file.mp4"
ouffmpeg.exe -i "input_file.mp4"
Vamos supor que o índice do fluxo de áudio a ser atrasado seja 2 (ou seja, o terceiro fluxo) e que a entrada atrasada seja a segundo (como no meu exemplo). Para atrasar apenas o terceiro fluxo, pegue todos os outros fluxos da primeira entrada e apenas um fluxo de áudio da segunda entrada (atrasada):-map 0:0 -map 0:1 -map 1:2
-map 1:m:language:eng
No entanto, lembre-se de que ele selecionará todos os fluxos satisfazendo o critério, possivelmente incluindo vários fluxos de áudio e / ou legendas. Você pode encontrar mais informações em stackoverflow.com/questions/46769419/…-c copy
pode ser usado em vez de-vcodec copy -acodec copy
, eitsoffset
afeta apenas vídeo, então talvez isso iria funcionar da mesma ?:ffmpeg -i "movie.mp4" -itsoffset 3.84 -c copy "movie-video-delayed.mp4"
e para atrasar o áudio em vez de simplesmente adicionar um sinal negativo com a duração:-3.84
.Faça o primeiro áudio de silêncio:
Em seguida, concatize os arquivos:
fonte