WebRTC多人视频通话PC端正常,iPhone(iOS Safari)发起时接收方无法看到彼此画面的问题求助
WebRTC多人视频通话PC端正常,iPhone(iOS Safari)发起时接收方无法看到彼此画面的问题求助
各位好,我最近做了一个基于WebRTC、Knockout.js和SignalR的多人视频通话应用,PC端各种场景都跑的很顺畅,多个用户互相通话完全没问题,但一到用iPhone的iOS Safari发起通话就出怪事了!
具体问题是这样的:当用iPhone(iOS Safari)发起通话时,所有接收方的视频容器确实能被正常添加,但画面全是空白的——只有发起者(也就是用iPhone的我)能看到所有人的视频流,其他接收方之间完全看不到彼此的画面,只能看到发起者的。
举两个实际测试的例子:
- 正常场景:用我的笔记本电脑给iPhone 1和iPhone 2发起通话,不管是电脑看手机,还是手机之间互相看,所有画面都正常显示,完全没毛病
- 异常场景:用iPhone 1或者iPhone 2给我的笔记本和另一台iPhone发起通话,发起者能正常看到所有人的画面,但笔记本和另一台iPhone之间互相看不到对方的画面,只能看到发起者的
下面是我目前的部分代码片段:
import * as ko from "knockout"; import * as signalR from "@microsoft/signalr"; import { Modal } from "bootstrap"; let receiverUserIds: string[] = []; async function getUserMedia() { try { return await navigator.mediaDevices.getUserMedia({ video: true, audio: true, }); } catch (error) { // 这里省略了部分错误处理代码 } }
我自己怀疑是不是iOS Safari在WebRTC的信令处理或者媒体流转发上有什么特殊的限制?比如ICE候选的收集、SDP的处理有没有和Chrome/Edge这些桌面浏览器不一样的地方?有没有大佬遇到过类似的问题,或者能给我一些排查的思路?
备注:内容来源于stack exchange,提问作者user27731575
相关产品推荐
相关产品推荐

