问题
使用 iPad 的 iOS Safari,我可以使用Daily.co 的视频 API调用其他设备。但是,当我开始通过audio-recorder-polyfill 库录制本地麦克风时,其他人将不再能够听到我的声音,即使我仍然可以听到他们的声音并共享我的相机。即使录音会话结束,音频通话仍然中断(尽管录音机工作正常)。
它似乎是特定于 iOS 的,因为我的 Surface 的 Windows Chrome 没有问题。
如何重现
大约需要2分钟
- 使用 iPad Safari 和任何其他设备访问explain.mit.edu 。按下绿色呼叫按钮。
- 确认视频通话正常后,按 iPad 上的录制按钮
- 请注意,其他设备无法再听到任何声音
我试过的
首先,我猜想 MediaRecorder 会使 Daily 视频通话对麦克风的访问无效,所以我曾经setLocalDevice
每隔 5 秒重新指定对 Daily 的访问,看看会发生什么。在录制过程中没有任何区别,但是当录制结束时,它确实恢复了音频通话。
所以剩下的问题是音频调用流在录制过程中不起作用:我阅读了有关 MediaCapture API 的 MDN 文档,它提到一个流有一个输入和一个输出,但我不知道那是什么手段,以及是否可以由两个“事物”同时访问一个麦克风流。
相关代码
我只使用 Daily 和 audio-recorder-polyfill 提供的基本最小 API
视频通话(完整代码在这里)
await this.CallObject.join({
url: conferenceRoom.url,
userName: this.sessionID
});
录音(完整代码在这里)
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
this.recorder = new MediaRecorder(stream);
this.recorder.start();
我不相信这个问题是在其他地方引起的,但如果需要,这里是完整的存储库代码
真实世界的上下文 对于上下文,我在https://explain.mit.edu上工作。你去那里寻求帮助,然后其他人会到达并使用实时黑板和语音聊天向你解释一些事情 - 并且作为副产品制作了 KhanAcademy 视频。但是现在如果有人按下“录音”,语音聊天将停止工作。