无法使用Web Audio API与iOS 11 Safari配合使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法使用Web Audio API与iOS 11 Safari配合使用相关的知识,希望对你有一定的参考价值。

所以ios 11 Safari应该添加对Web Audio API的支持,但它似乎仍然无法使用这个javascript代码:

//called on page load
get_user_media = get_user_media || navigator.webkitGetUserMedia;  
get_user_media = get_user_media || navigator.mozGetUserMedia;
get_user_media.call(navigator, { "audio": true }, use_stream, function () { });
function use_stream(stream){
    var audio_context = new AudioContext();
    var microphone = audio_context.createMediaStreamSource(stream);
    window.source = microphone; // Workaround for https://bugzilla.mozilla.org/show_bug.cgi?id=934512
    var script_processor = audio_context.createScriptProcessor(1024, 1, 1);
    script_processor.connect(audio_context.destination);
    microphone.connect(script_processor);
    //do more stuff which involves processing the data from user's microphone...
}

我复制粘贴了大部分代码,所以我只是粗略地了解它。我知道它应该(并且在其他浏览器上)捕获用户的麦克风以进行进一步处理。我知道var audio_context = new AudioContext();行上的代码中断(因为在运行之后没有代码),但没有任何错误消息因为我没有调试iOS Safari所需的mac(苹果已经死> _

e:忘了提到我查了一下,显然我在Safari中使用Web Audio API之前需要关键字“webkit”,但是使它成为var audio_context = new webkitAudioContext();也不起作用

答案

@TomW在正确的轨道上 - 基本上webkitAudioContext被暂停,除非它是直接响应用户的点击创建的(在你获得流之前)。

有关更多详细信息和工作示例,请参阅我在https://stackoverflow.com/a/46534088/933879的回答。

另一答案

什么不适用于移动保存到主屏幕应用程序。我向Apple开发人员发布了一个错误报告。得到一个回复​​,它是一个重复(这意味着他们知道..没有线索,如果他们将实际修复它)。

以上是关于无法使用Web Audio API与iOS 11 Safari配合使用的主要内容,如果未能解决你的问题,请参考以下文章

Web Audio Api 与 Web Speech Api 集成 - 将扬声器/声卡输出流式传输到语音识别 api

可以使用Web Audio API和createMediaElementSource分析来自Icecast的流式音频吗?

Web Audio API 如何命名声音

Web Audio API:当使用媒体流时,Firefox 中的 FFT 数据与 chrome 中的不同?

如何使用 Web Audio API 移动/调制音频缓冲频率

使用 Web Audio API 进行离线/非实时渲染