我目前正在开发一个使用 WebRTC 进行直播的应用程序。 但是,建立连接后,WebRTC 默认情况下会被解释为 iOS 设备的呼叫。这对我的用户来说意味着许多与音频相关的不直观行为。 (声音不能到0,与经典视频的音量不一样,当用户改变音量时我无法隐藏通话音量HUD...)
因此,我正在寻找一种本地方法来“路由”(或更改)音频类别,从“呼叫”音频到标准“媒体”音频。
有什么办法可以做到这一点吗?
您可以通过 Web Audio API AudioContext 路由 WebRTC 流,而不是通过 HTML5 音频元素播放它,从而将音频类别从“通话”音频更改为更像标准“媒体”音频。
请参阅 createMediaStreamSourceNode 和 https://dvcs.w3.org/hg/audio/raw-file/tip/webaudio/webrtc-integration.html 了解示例。
请注意,在 iOS 上,AudioContext 以挂起状态启动,并且必须在用户手势事件(例如指针/触摸事件)的上下文中“恢复”,然后才能听到任何声音。 在以下情况下,AudioContext 也会返回挂起状态:
这意味着 WebRTC 流在这些情况下将变得安静,并且必须恢复 AudioContext 才能再次听到声音。