No ffmpeg, como atrasar somente o áudio de um vídeo .mp4 sem converter o áudio?

32

No meu arquivo .mp4, o atraso de áudio é de -3840 ms. Eu o sincronizei no KMplayer e não quero usar o MKVGUI para criar um arquivo .mkv. Eu só preciso atrasar o áudio em -3840 ms, tudo o mais intacto.
Qual seria o comando certo para realizar isso usando o ffmpeg?
Eu agradeceria sua ajuda.

    
por Alireza 05.10.2015 / 11:32

2 respostas

47

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 do ffmpeg não seja muito antiga, mais recente que 2012 será suficiente.

Explicação

-itsoffset 3.84 -i "movie.mp4"

Desloca os timestamps 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

Leva fluxo de vídeo da segunda entrada (atrasada) e fluxo de áudio da primeira entrada - ambas as entradas podem, naturalmente, ser o mesmo arquivo.

Uma explicação mais detalhada pode ser encontrada aqui: link

    
por 06.10.2015 / 22:58
0

faça o primeiro áudio em silêncio:

ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 3 silence_3_sec.mp3

e depois ficheiros concat:

ffmpeg -i "concat:silence_3_sec.mp3|input.mp3" -acodec copy out.mp3

    
por 24.03.2018 / 06:22