在我上传了一个FFmpeg 编码的 YouTube 视频几个小时后,我发送给它的少数人开始报告一个奇怪的问题:音频的前 26 分钟听起来非常失真;有人形容它听起来像是在水下。这是一个听起来像的例子。
然后我开始与更多人进行测试,并从总共 31 台移动设备中得出以下数据。
普通音频:
Galaxy S10 (x2)
Galaxy S20 (x3)
Galaxy A50
iPhone XR (x3)
iPhone 7
iPhone 8 (x2)
iPhone 10 Pro
iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone 12 (x3)
iPhone 12 Pro
Oppo F11
OnePlus 7T
Pixel 3A XL
OnePlus 7 Pro
失真的音频:
iPhone 6S
Galaxy S7 Edge
Galaxy S8+
Galaxy S10 Lite
Huawei Y6 2019
Huawei P30 Pro
Honor 10 Lite
前 26 分钟的音频在 31 台移动设备中有 7 台出现故障,即 22%,如果仅包括 Android 手机,这一比例会增加到 50% 以上。我询问的大多数人都来自发达国家,这意味着数据也偏向于更新、更现代的手机,这意味着在主要使用旧版 Android 的欠发达国家中,这一数字很容易接近 80%。
不用说,对于像我这样希望能够上传到 YouTube 并让它处理其余部分而不是进行类似 web-dev 的设备调试的人来说,这是一个相当大的问题。
我从几个源视频中编译了视频,使用 FFmpeg 对它们进行编码和连接。
它使用 H264 和 OPUS 作为编解码器,但更相关的是,检查前 26 分钟来自的源视频表明这个问题源于该视频,所以现在问题变成了:
a) 在如此大比例的移动设备中,导致音频出现乱码的特定源视频是什么?
b)如何使用 FFmpeg 修复它?
我不知道为什么这被否决了,但无论如何,我设法通过将完全相同的问题发布到 Doom9 音频专家论坛来解决该问题。我几乎立即从用户lvqcl得到以下回复:
当我问他为什么问题仅限于某些移动设备时,他回答说:
然后我开始搜索如何在 FFmpeg 中解决这个问题,并遇到了以下命令,由 Gyan提供:
在有问题的源视频上运行此命令,重新连接所有源视频,重新上传到 YouTube,然后使用相同的设备再次测试,确认这确实解决了问题。
我很高兴能够将我的视频上传到 YouTube,而不必担心个人设备支持,在我的 Web 开发工作中已经处理了足够多的问题。感谢所有投票反对该网站日益过分热心的版主的意愿保持这个问题开放的人。