In my .mp4 file the audio delay is -3840 ms. I synced it in KMplayer, and I don’t want to use MKVGUI to make a .mkv file. I just need to delay the audio by 3840 ms, everything else should be left intact.
What would be the right command to accomplish this using ffmpeg?
I would appreciate your help.
Answer
If you need to delay video by 3.84 seconds, use a command like this:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"
If you need to delay audio by 3.84 seconds, use a command like this:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"
Make sure, that your ffmpeg build is not too old, newer than 2012 will suffice.
Explanation
-itsoffset 3.84 -i "movie.mp4"
Offsets timestamps of all streams by 3.84 seconds in the input file that follows the option (movie.mp4).
-map 1:v -map 0:a
Takes video stream from the second (delayed) input and audio stream from the first input – both inputs may of course be the same file.
A more verbose explanation can be found here:
http://alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/
Attribution
Source : Link , Question Author : Alireza , Answer Author : Weaver