修复音频滞后(音频和视频不同步)的 m4v 视频

修复音频滞后(音频和视频不同步)的 m4v 视频

以下是针对 Windows 的类似问题:

修复视频与音频不同步的工具?

我希望在 Mac 上解决这个问题。

我尝试过 Handbrake 和 Avidemux(后者似乎有一个选项——“shift”——来修复它,但它根本不播放音频,所以我不知道它是否有任何作用!)。

答案1

获取一份 FFmpeg。请参阅本文末尾的说明,了解如何获取 FFmpeg。

视频是否落后于音频或音频是否落后于视频,其实并不重要。基本命令如下。我们将传递两次输入,如两个-i选项所示,然后延迟一次输入,并将它们合并在一起。

ffmpeg -i in.flv -itsoffset offset -i in.flv -map 1:0 -map 0:1 -c copy out.flv

这里,offset是以秒为单位的延迟,例如1.50.35。此值必须是正数,因此如果您的音频落后于视频,我们将不得不偏移视频。如上例所示。同样,如果视频落后于音频,我们将不得不偏移音频。

那么,如何选择延迟音频还是视频?好吧,既然我们已经延迟了整个in.flv,我们只需选择音频或视频流并将其与原始音频或视频流合并即可。这是在选项中完成的-map

基本上,map有两个数字。冒号前面的数字指定输入文件编号(从 0 开始),第二个数字指定输入文件流(也从 0 开始)。

因此,要延迟音频,请使用以下两个选项:

  • -map 1:0意思是:从第二个输入文件中取出第一个流,(视频来自原始文件)
  • -map 0:1意思是:从第一个输入文件中取出第二个流(来自延迟文件的音频)

如果你必须延迟视频,请将其反转:

  • -map 0:0意思是:从第一个输入文件中取出第一个流(来自延迟文件的视频)
  • -map 1:1意思是:从第二个输入文件中取出第二个流(来自原始文件的音频)

最后,-c copy只需告诉 FFmpeg 复制视频和音频比特流。这意味着将没有编码过程。这使得命令非常快,您甚至不会在此过程中损失任何质量。但是,如果您遇到同步错误,那么您应该退出-c copy并让 FFmpeg 重新编码输入。


您可以通过以下方式获取最新稳定的 FFmpeg 版本自制

  • 打开终端并输入:

      ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
    
  • 查看安装要求也一样。如果还没有,你必须安装 Xcode 的命令行工具。你需要一个 Apple ID 才能安装。

  • 安装 Homebrew 后,安装 FFmpeg:

      brew install ffmpeg
    
  • 完成后,我们可以使用 FFmpeg 修复您的视频。

相关内容