将 AAC 文件添加到 MP4 导致音频不同步

将 AAC 文件添加到 MP4 导致音频不同步

我有一个应用程序,可以处理来自许多不同来源的音频和视频文件的规范化和组合。

所有传入音频均按如下方式规范化:

ffmpeg.exe -i "PathToIncommingAudioFile" -acodec aac -ac 2 -ar 44100 -ab 128k -strict experimental ""outputFile.aac"

所有传入视频均按如下方式规范化:

ffmpeg.exe -i "PathToIncommingAudioFile" -s 852x480 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -vf ""scale=iw*min(852/iw\,480 /ih):ih*min(852/iw\,480 /ih),pad=852:480 :(852-iw)/2:(480 -ih)/2"" -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "outputFile.mp4"

这些命令中的每一个(请原谅任何不良做法,这不是我的专业领域)都用于规范媒体,以便它可以在跨设备播放。


其他代码允许我们成功合并音频和视频。然而,当我尝试合并两者时,音频不同步。

这是我正在做的事情:

  1. 首先将音频转换为视频文件,使用简单的 PNG 图像作为标语

    ffmpeg.exe -loop 1 -shortest -i "image.png" -i "normalized.aac" -s 852x450 -r 30 -aspect 1.775 -b:v 2000000 -vcodec mpeg4 -acodec aac -ac 2 -b:a 128k -ar 44100 -strict experimental "audioAsVideo.mp4"
    
  2. 接下来,尝试以通常的方式合并视频。(未找到使用 ffmpeg 的解决方案,在大多数情况下,这是目前有效的方法)

    mp4box.exe -cat "audioAsVideo.mp4" -cat "normalizedVideo.mp4" -new "CombinedVideo.mp4"
    
  3. 接下来,为了处理一些只有一个声道音频的视频(如网络摄像头),添加了以下 hack/修复。它适用于所有视频到视频组合,通常有效

    ffmpeg.exe -i "CombinedVideo.mp4" -c copy -ac 1 "SingleChannelCombinedVideo.mp4"
    

如果这个过程是用音频和视频完成的,那么第二个文件的音频同步就会关闭。如果这是标牌上的音频,那就没什么大不了的。但如果是视频,那就非常令人分心了。

  • 有谁看到我做的任何事情可能会导致这种情况?
  • 关于要改变什么有什么想法吗?
  • 也许有一种方法可以在两者之间设置一个缓冲区,从而强制同步?
  • 有更好的方法吗?

相关内容