无法获取网络音频API与iOS Safari浏览器11的工作

问题描述:

所以iOS的Safari浏览器11本来是要增加对通过Web Audio API的支持,但它似乎仍然没有与这段JavaScript代码的工作:无法获取网络音频API与iOS Safari浏览器11的工作

//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网络音频API,但是使它var audio_context = new webkitAudioContext();之前关键字“WebKit的”不工作,要么

+0

将其更改为window.webketAudioContext – user7951676

+0

是webket一个错字? – Artikash

+1

用'''var audio_context = window.webkitAudioContext'替换'''var audio_context = new AudioContext();'但似乎并没有帮助 – Artikash

@TomW是右侧跟踪 - 基本上webkitAudioContext被暂停,除非它是直接响应用户的点击(在获取流之前)创建的。

查看我的答案https://*.com/a/46534088/933879了解更多详情和工作示例。

+0

谢谢,现在就开始工作吧。需要将AudioContext()更改为webkitAudioContext()和一个按钮以恢复audio_context – Artikash

+0

有趣。我在onclick句柄上有一个带'audioContext.resume()'的按钮。然后,当我尝试播放声音时,我仍然没有声音。如果我检查音频上下文对象,它的'state'属性是'running'。还有什么我失踪? –

+0

@AleksG:可能。如果状态是“运行”,那么你可能不会碰到这个特殊的问题,尽管很难说实际问题是什么。 –

没有什么适用于手机保存到主屏幕应用程序。我向苹果开发人员发布了一个错误报告。得到了一个答复,它是一个重复的(这意味着他们知道..不知道如果或何时他们将实际修复它)。