微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

FFmpeg - 混合连接 MP4 文件时出现 A/V 同步问题

如何解决FFmpeg - 混合连接 MP4 文件时出现 A/V 同步问题

首先,我想说我花了一整天时间研究这个问题,尝试了我在网上找到的所有方法,但没有一个解决方案有效,所以我很绝望。

我正在使用 Azure 媒体服务测试实时流式传输。当事件停止时,我希望将录音作为单个 MP4 文件获取,但 Azure 以碎片形式分别保存视频和音频轨道。我发现我可以连接这些文件(我使用了 OSX cat 命令),所以我确实有完美的 MP4 视频和音频文件 - 它们都没有任何中断地播放并且看起来很好。

以下是这些文件的 FFmpeg 信息:

Input #0,mov,mp4,m4a,3gp,3g2,mj2,from 'video_1200k.mp4':
  Metadata:
    major_brand     : isml
    minor_version   : 512
    compatible_brands: ismlpiff
    encoder         : Lavf58.45.100
  Duration: 01:05:49.57,start: 0.085000,bitrate: 1166 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661),yuv420p,1280x720,1163 kb/s,23.98 fps,23.98 tbr,90k tbn,47.95 tbc (default)
    Metadata:
      handler_name    : VideoHandler
      vendor_id       : [0][0][0][0]

Input #1,from 'audio_128k.mp4':
  Metadata:
    major_brand     : isml
    minor_version   : 512
    compatible_brands: ismlpiff
    encoder         : Lavf58.45.100
  Duration: 01:06:09.57,start: 0.000000,bitrate: 132 kb/s
    Stream #1:0(und): Audio: aac (LC) (mp4a / 0x6134706D),44100 Hz,stereo,fltp,128 kb/s (default)
    Metadata:
      handler_name    : Audio
      vendor_id       : [0][0][0][0]

我注意到了持续时间的差异,但我认为当我混合这些流时,我会得到一个文件,其中最后几秒钟只有音轨。我从测试最基本的 FFmpeg 命令 ffmpeg -i video_1200k.mp4 -i audio_128k.mp4 -c copy muxed.mp4 开始,但结果发现 A/V 不同步 - 视频领先于音频,并且随着时间的推移差距增加了很多。

我几乎尝试了我在类似帖子中找到的所有 FFmpeg 命令参数,包括重新编码、偏移音频、加速音频(以匹配视频持续时间)、添加音频过滤器(aresample=async 与不同的值) 并且他们都没有帮助 - 我设法实现的只是在视频开始时获得同步,但是音频越来越延迟(在 50 分钟时延迟大约为 15 秒)。

任何想法我做错了什么?任何提示将不胜感激。

非常感谢!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。