Answers:
如果您需要将视频延迟 3.84秒,请使用如下命令:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 1:v -map 0:a -c copy "movie-video-delayed.mp4"
如果您需要将音频延迟 3.84秒,请使用如下命令:
ffmpeg.exe -i "movie.mp4" -itsoffset 3.84 -i "movie.mp4" -map 0:v -map 1:a -c copy "movie-audio-delayed.mp4"
确保你的ffmpeg版本不是太旧,比2012年更新就足够了。
说明
-itsoffset 3.84 -i "movie.mp4"
通过3.84秒,所述输入文件中的所有流的偏移时间戳如下选项(movie.mp4)。
-map 1:v -map 0:a
从第一个输入的第二个(延迟的)输入和音频流中获取视频流 - 两个输入当然可以是同一个文件。
可以在这里找到更详细的解释:http:
//alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/
ffprobe.exe "input_file.mp4"
或者ffmpeg.exe -i "input_file.mp4"
假设要延迟的音频流的索引是2(即第三个流),并且延迟输入是第二个(如我的例子)。要仅延迟第三个流,请从第一个输入中获取所有其他流,并从第二个(延迟)输入中仅获取一个音频流:-map 0:0 -map 0:1 -map 1:2
-map 1:m:language:eng
但是,请记住,它会选择所有流满足标准,可能包括多个音频和/或字幕流。您可以在stackoverflow.com/questions/46769419
-c copy
可以用来代替-vcodec copy -acodec copy
,而且itsoffset
只影响视频,所以这可能会起作用吗?ffmpeg -i "movie.mp4" -itsoffset 3.84 -c copy "movie-video-delayed.mp4"
并且延迟音频而只是在持续时间中添加一个负号:-3.84
。