Javascript IOS WebRTC js上的黑屏

Javascript IOS WebRTC js上的黑屏,javascript,ios,iphone,webrtc,getusermedia,Javascript,Ios,Iphone,Webrtc,Getusermedia,我正在尝试在移动设备和计算机之间开发一个webrtc视频呼叫系统。移动设备将his的视频流发送到计算机 在移动设备中,用户界面只显示通过摄像头录制的视频,在安卓系统中,这一切都很好,但在iOS系统中(我用两个不同的iPhone测试了最新的iOS版本),视频没有启动,显示为黑色,但它可以毫无问题地传输到计算机 我尝试了我在网上找到的一切,向视频元素添加控件,删除控件,添加自动播放播放在线…,请求getUserMedia卸载并根据用户手势复制流,但似乎没有任何效果,我甚至没有在手机控制台上得到任何错

我正在尝试在移动设备和计算机之间开发一个webrtc视频呼叫系统。移动设备将his的视频流发送到计算机

在移动设备中,用户界面只显示通过摄像头录制的视频,在安卓系统中,这一切都很好,但在iOS系统中(我用两个不同的iPhone测试了最新的iOS版本),视频没有启动,显示为黑色,但它可以毫无问题地传输到计算机

我尝试了我在网上找到的一切,向视频元素添加控件,删除控件,添加自动播放播放在线…,请求getUserMedia卸载并根据用户手势复制流,但似乎没有任何效果,我甚至没有在手机控制台上得到任何错误。我在不同的浏览器safari和chrome上进行了测试。更奇怪的是,有时候它是从你在浏览器上打开的标签列表开始的,然后你回到页面

这是视频元素的代码

<video class='user-virtual-assessment-video' id='virtualAssessmentVideo' autoplay muted playsinline>
            
</video>
<button id='startVirtualAssessment' class='action-button'>
  <svg ...>
</button>
函数startVirtualAssessment基本上启动rtc连接,iPhone的用户媒体在页面加载时被请求并存储在stream变量中

navigator.mediaDevices.getUserMedia({video: { facingMode: 'environment', aspectRatio: {exact: 16/9}, frameRate: { ideal: 10, max: 15 } }}).then((streamObject) => {
    stream = streamObject;
  })
也许有一些明显的东西我没有理解或不理解,但我并不真正看到代码的问题


非常感谢:)

我们认为我们已经确定了这个问题的原因:在mobile safari(仅限)上,对于同一媒体类型,
getUserMedia
不能被多次请求

如果您在连接到其他人之前调用
getUserMedia
一次,让用户看到他/她自己,然后让webRTC库(在我们的例子中,例如mediasoup)再次调用
getUserMedia
,则第一个请求被静音(导致黑屏),第二个请求将优先(让其他人看到用户)

解决方法似乎是在第一次检索到媒体流时使用
.clone()
,而不是第二次调用
getUserMedia


另请参阅此webkit错误报告:

尝试将
aspectRatio:{exact:16/9}
更改为
aspectRatio:{ideal:16/9}
。iOS对与摄像头匹配的显示器有点挑剔。另外,iOS上的Chrome是移动Safari的包装,所以就gUM而言,它们都是一样的。你好,琼斯,谢谢你的回答,我尝试了你提出的更改,但问题仍然存在,如果是关于限制的问题,我不应该在通过webRTC传输的视频中也有问题吗?,我可以在电脑中清晰地看到视频,但在电话中看不到。我也看到了,我很想知道是否有人有解决方案。适用于除mobile safari(iPad、iPhone)以外的所有浏览器。我可以在它变黑之前看到大约1帧的视频。我可以确认视频流数据正在通过网络发送,因为其他人可以看到我的视频流。
navigator.mediaDevices.getUserMedia({video: { facingMode: 'environment', aspectRatio: {exact: 16/9}, frameRate: { ideal: 10, max: 15 } }}).then((streamObject) => {
    stream = streamObject;
  })