dre*_*ves 2 audio video video-editing video-conversion macos
这是Windows的类似问题:
我希望在 Mac 上解决这个问题。
我试过 Handbrake 和 Avidemux(后者似乎有一个选项——“shift”——来修复它,但它根本不播放音频所以我不知道它是否在做任何事情!)。
给自己一份 FFmpeg 的副本。有关如何执行此操作的信息,请参阅这篇文章的底部。
视频是否落后于音频,反之亦然,这并不重要。基本命令如下。我们将传递两次输入,从两个-i
选项可以看出,然后延迟一个输入,并将它们合并在一起。
ffmpeg -i in.flv -itsoffset offset -i in.flv -map 1:0 -map 0:1 -c copy out.flv
Run Code Online (Sandbox Code Playgroud)
这里offset
是以秒为单位的延迟,例如1.5
或0.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 重新编码输入。
您可以通过Homebrew获得最新的稳定 FFmpeg 版本。
打开终端并输入:
ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
Run Code Online (Sandbox Code Playgroud)另请参阅安装要求。如果还没有,则必须为 Xcode 安装命令行工具。为此,您将需要一个 Apple ID。
安装 Homebrew 后,安装 FFmpeg:
brew install ffmpeg
Run Code Online (Sandbox Code Playgroud)完成后,我们可以使用 FFmpeg 来修复您的视频。
归档时间: |
|
查看次数: |
5259 次 |
最近记录: |