javascript - iOS safari 浏览器中录音的音频质量很差

标签 javascript ios mobile-safari html5-audio audio-recording

我试图了解 safari ios (12.3.1) 在浏览器中录制音频的限制。这是因为我录制的任何语音(无论编解码器/容器如何)的质量比通过 native iOS 应用录制的同等音频低。

无论编码器设置如何(例如比特率/复杂性/采样率/ channel ),在 safari ios (iphone8) 中录制的 Opus、wav 和 mp3 文件似乎都具有一定的质量上限。但是,当在 native 应用程序中录制语音时,我发现我可以生成始终如一的出色结果。

Safari 中的音频质量不受以下因素影响:使用不同的 javascript 录音机(仅限 wav)和 javascript 编码器(opus 和 mp3)录制音频;清除浏览器缓存;从私有(private)浏览器窗口重新加载 js;打开 MediaRecorder API 实验功能。但是

最佳答案

过去几天我一直在各种设备上使用 getUserMedia()。在分析生成的 WAV 文件(波形和频谱分析)后,以下是我能够从中获得的一些信息。

Safari iOS 将生成一个不错的 WAV 文件(默认为 48000Khz,16 位,立体声),但无论传递给 getUserMedia() 的约束如何,音频频谱都不会包含任何频率高于14Khz。 因此 WAV 容器没问题,但写入其中的音频质量与 native iOS 应用程序中的“中”音频预设大致相同。

iOS wave file spectrum

这样做的后果是对音频产生非常明显的“电话”效果,并且文件无法用于专业音频目的。

Android 设备在默认配置(音频频谱的强烈限制)中产生类似的结果,但通过传递一组禁用辅助功能的约束,如下所示:

autoGainControl:false, 
echoCancellation:false, 
noiseSuppression:false

我们可以获得非常可接受的音频质量。

android 8 wave file spectrum

不幸的是,这些相同的设置不允许 iOS 实现可接受的音频质量,并且到目前为止似乎没有可用的解决方法。

关于javascript - iOS safari 浏览器中录音的音频质量很差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56430774/

相关文章:

ios - jvectormap:消除触摸时的黑色闪烁

javascript - 通过$post发送html数据失败

javascript - 如何按嵌套值将嵌套对象数组分组为多个数组

javascript - 对许多 jquery 函数进行分组的最佳做法是什么?

javascript - 如何将从 firebase 读取的值分配给变量

ios - Swift - 如何使用字典为 tableView 单元格提供文本?

ios - queryForTable viewDidAppear、viewWillAppear 等不适用于 subview

ios - SSZipArchive "failed to open zip file"-- url.path 不是解决方案

ios - iOS Safari 11.3 上的导航器中没有服务 worker

iphone - 如何在不购买 iPhone 的情况下测试我的网站在 Mobile Safari 上的呈现情况?