ios - 在 iOS 的移动 Safari 中播放时流式音频失真
问题描述
我们在 AWS s3 上托管 mp3 文件。我们已经构建了一个可以播放 mp3 的 web 应用程序(在 React 中)。但是,在 iOS 上的 Safari 中播放时,它有时会失真。奇怪的是,这种情况并非一直发生。
- 这是原始文件(有时失真):https ://sayyit-prod-static-assets.s3.amazonaws.com/static/audio/Darrin+M.+McMahon.original.mp3
- 这是失真时的文件声音:https ://sayyit-prod-static-assets.s3.amazonaws.com/static/audio/WhatsApp+Video+2019-09-26+at+11.06.49+AM.mp4
现在,这种失真只有在通过我们的应用程序播放时才会发生。当我们提供到 s3 的直接链接时(就像我在上面所做的那样),它就可以工作了。在我们的应用程序中直接链接到 s3 时也会发生失真。
这里有一些想法:
- mp3文件坏了
- 直接进入S3链接时,完全下载,似乎可以让mp3文件完美播放
任何帮助将不胜感激。
解决方案
此 MP3 文件的采样率为 16 kHz。这非常低(对于语音来说并不异常),但对于 128k MP3 来说也非常低。我怀疑重采样器存在错误(因为无论如何 iPhone 硬件都被锁定为 48 kHz),或者您遇到了解码器的边缘情况错误。
我建议您停止使用 MP3 并立即解决一些问题。虽然 MP3 的质量可以接受,但它在给定比特率下的质量不如替代品。现在,您应该考虑使用 Opus。如果混合到 CAF 文件中,它在 iOS 上受支持,并且非常有效。您可以将语音的比特率降低到 48k 并且仍然具有出色的质量。而且,您将一次性绕过您现在遇到的任何重新采样或解码问题。
推荐阅读
- vba - Vba 计数范围内具有特定颜色的单元格,由条件格式着色
- excel - 如果单元格为空白,VBA 代码删除行不起作用
- python - 如何仅更改熊猫数据框中仅具有特定数字总和的组的最大值
- python-3.x - 断言失败:预测必须 >= 0,条件 x >= y 在元素上不成立
- angular - 角度解析未设置 ActivatedRoute 数据
- sql - SQL 查询 - 将编码转换为 UTF-8
- c++ - 如何将预编译/预编译的 *.o 目标文件添加到 GN 中的可执行文件
- mysql - 如何从子查询中获取最大值?
- android - 如何准确检测所有 OnePlus 设备?
- javascript - Drag-gable 项目没有移动。如何解决?