在 ffmpeg 中,如何仅延迟 .mp4 视频的音频而不转换音频?

Ali*_*eza 75 encoding mp4 ffmpeg conversion

在我的 .mp4 文件中,音频延迟为 -3840 毫秒。我在KMplayer中同步了它,我不想使用MKVGUI来制作.mkv文件。我只需要将音频延迟 3840 毫秒,其他一切都应该保持不变。
使用 ffmpeg 完成此操作的正确命令是什么?
我会很感激你的帮助。

Wea*_*ver 130

如果您需要将视频延迟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"
Run Code Online (Sandbox Code Playgroud)

如果您需要将音频延迟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"
Run Code Online (Sandbox Code Playgroud)

确保您的 ffmpeg 版本不会太旧,比 2012 年新就足够了。


解释

-itsoffset 3.84 -i "movie.mp4"
Run Code Online (Sandbox Code Playgroud)

偏移通过在输入文件3.84秒时间戳的所有流的如下的选项(movie.mp4)。

-map 1:v -map 0:a
Run Code Online (Sandbox Code Playgroud)

从第二个(延迟)输入获取视频流,从第一个输入获取音频流 - 当然两个输入可能是同一个文件。

更详细的解释可以在这里找到:http :
//alien.slackbook.org/blog/fixing-audio-sync-with-ffmpeg/

  • 你如何选择一个特定的音轨而不是延迟所有的音轨? (3认同)
  • AFAIK `-c copy` 可以用来代替 `-vcodec copy -acodec copy`,并且 `itsoffset` 只影响视频,所以也许这会起作用?: `ffmpeg -i "movie.mp4" -itsoffset 3.84 - c 复制“movie-video-delayed.mp4”`并延迟音频,只需在持续时间中添加一个负号:`-3.84`。 (2认同)
  • @miyalys 这样做对我不起作用:“选项itsoffset(设置输入 ts 偏移量)无法应用于输出 url 延迟。mp4 - 您正在尝试将输入选项应用于输出文件,反之亦然。移动此所属文件之前的选项。解析输出文件delayed.mp4的选项时出错。打开输出文件时出错:参数无效” (2认同)