WebRTC待解问题
1、获取媒体设备的浏览器兼容问题 (基本解决)
Q:在调用getUserMedia()开启摄像头之前需要调用:
“navigator.mediaDevices.enumerateDevices()” 获取设备列表,谷歌浏览器外的大部分浏览器只有在获取媒体权限后才能读取设备列表中的label,也就是要先调用 “navigator.mediaDevices.getUserMedia()” 询问用户是否允许访问摄像头/麦克风,但是在这里(页面1)有几个问题:
1、我仅仅想获取设备列表而已,不需要开启摄像头/麦克风!
2、在后面开会时(页面2)需要基于页面1设置的deviceId,还要再调用一次getUserMedia,因为只有在enumerateDevices()之后才能知道deviceId,而enumerateDevices()又要在getUserMedia()之后才能知道详细label,而且getUserMedia()的video和audio参数又要基于enumerateDevices()才能确定有无媒体设备??????
如果没有其他方法,那就自己设置媒体设备的名字??
A:结合https://editor.csdn.net/md/?articleId=114967894这篇博客的方法
2、共享屏幕选择整个屏幕时画面层层嵌套问题 (已解决)
Q: 选择共享整个屏幕时怎么屏幕自身屏幕?
先记录一下相关配置资料:
1、可能用到的配置项:
下面是两个相关网站
https://developer.mozilla.org/zh-CN/docs/Web/API/Screen_Capture_API
https://w3c.github.io/mediacapture-screen-share/#ref-for-idl-def- DisplayCaptureSurfaceType.application-1
A:层层重叠是因为发起端这边设置了 video.srcObject = stream
,发起端时页面渲染了共享屏幕stream,画面不断变化,就会导致观看端获取视频帧的速率过快,从而引起层层重叠。
3、websocket信令端每次重连都会new websocket实例
能否不new一个新实例websocket关闭后,及websocket。readyState为close后,重连。
4、根据布局改变分辨率,web端使用的同一个videoTrack源,只能改变本地的,且本地“我”改变后,远程所有的“我”都会改变,如何对不同对端发送不同分辨率
5、QQ浏览器和其它浏览器通讯时,出现bug(QQ&QQ正常)(已解决,但项目未使用)
A:结合https://editor.csdn.net/md/?articleId=115009208这篇博客的方法