不能在IOS上播放HTML Audio



我有一个web应用程序,用户可以通过Webrtc和对等服务器相互交谈。我的问题是,在ios设备上,我不能发送我的音频,我听不到别人的。经过一番调查,我发现这是苹果公司有意为之。如果音频是由用户触发的,而不是来自网站,则只能播放音频。但我的应用程序是一个随机的大厅,人们可以在那里互相交谈,切换"伙伴";通过点击按钮。点击后,它搜索另一个免费用户,然后两者通过对等体连接并共享他们的音频流。

然后我尝试在触摸事件上调用audio.play()。但这也不管用。没事发生。双方仍然没有声音。你们知道我应该怎样处理这个问题吗?

在浏览器上都工作正常。此问题只出现在IOS移动浏览器上。

王问候。

考虑使用Web Audio API,而不是直接从媒体元素输出。具体来说:

  1. 创建AudioContext/webkitAudioContext。它通常以"suspended"开头。
  2. 用户交互时,如初始点击,呼叫context.resume()
  3. 当你想从一个新的WebRTC流输出音频时,创建一个新的MediaStreamAudioSourceNode,并将其连接到你的音频图。(如mediaStreamNode.connect(context.destination))

这不是一个hack或以任何方式解决自动播放限制。它只是把你所有的音频输出放在一个地方。

您实际上是在询问如何绕过限制。你没有明确说明你想绕过哪个限制,所以我只能根据你告诉我的情况来假设你想自动播放音频。

如果是这种情况,最简单的方法可能是设置一个空白视频流而不是音频流,并添加自动播放属性,如下所示:

<video autoplay>

然而,不要指望这个解决方案——或者任何针对任何限制的解决方案——作为一个长期的解决方案,如果你今天能让它工作的话。如果你可以绕过限制,那么不那么谨慎的开发者也可以,所以苹果可能倾向于修补任何绕过限制的方法。你最好的选择可能是使用React Native为iOS和Android构建一个本地应用程序。React Native可以使用JavaScript或TypeScript(你选择哪个)。

最新更新