safari - Safari 不发送 ice 候选人
问题描述
不要在 safari 中工作示例
https://github.com/Kurento/kurento-tutorial-node/tree/master/kurento-one2many-call
在 chrome 中,一切都很好。
在查看模式下,Safary 不会发送候选冰。演示者模式没问题
=====================
更新
在前面 (index.js)
始终执行 onOfferViewer 事件
onIceCandidate – 从未执行过
从 Front 到节点的连接
var ws = new WebSocket('wss://' + location.host + '/one2many');
在 KMS 上,Turn 不会打开,但会配置 Stun。我可以从 Safari 进行广播,但我无法观看
深入了解 kurento utils
在 WebRtcPeer 初始化之前选择了 2 个 Sturm 服务器
iceServers:数组(2) 0 {用户名:未定义,凭据:未定义,url: “stun:stun.l.google.com:19302”,urls:[“stun:stun.l.google.com:19302”]}
1 {用户名:未定义,凭据:未定义,网址: “stun:stun.voipbuster.com”,网址:[“stun:stun.voipbuster.com”]}
RTCPeerConnection 创建
后 Process answer 执行后
我认为下一步必须在函数 addEventListener
pc.addEventListener('icecandidate', function (event) {…}
在 Chrome 中的 addEventListener 函数中会执行一个回调,但对于 Safari 则永远不会。
我可以假设候选人在订阅发生之前就来了,但是没有证据,我不明白为什么演示者工作得很好。
细节
我开始在 Safari 中以演示者模式进行广播
Safari 版本- 13604.3.5 (MacOs - 11.0.1)
Safari 选项
旧 api - 已启用
冰限制 - 禁用
Bower 的依赖项
"dependencies": {
"adapter.js": "v0.2.9",
"bootstrap": "~3.3.0",
"ekko-lightbox": "~3.3.0",
"demo-console": "1.5.1",
"kurento-utils": "master"
}
package.json 结构
{
"name": "kurento-one2many-call",
"version": "6.7.3-dev",
"private": true,
"scripts": {
"postinstall": "cd static && bower install"
},
"dependencies": {
"express": "~4.12.4",
"minimist": "^1.1.1",
"ws": "~1.0.1",
"kurento-client": "Kurento/kurento-client-js"
},
"devDependencies": {
"bower": "^1.4.1"
}
}
Safari 日志的输出
Safari 日志的输出
[Log] Browser does not appear to be WebRTC-capable (adapter.js, line 34)
[Debug] constraints: {"offerToReceiveAudio":true,"offerToReceiveVideo":true} (kurento-utils.js, line 268)
[Debug] Created SDP offer (kurento-utils.js, line 270)
[Debug] Local description set – "v=0
↵o=- 5811275597248577793 2 IN IP4 127.0.0.1
↵s=-
↵t=0 0
↵a=msid-semantic: WMS
↵" (kurento-utils.js, line 275)
"v=0
o=- 5811275597248577793 2 IN IP4 127.0.0.1
s=-
t=0 0
a=msid-semantic: WMS
"
[Log] Senging message: {"id":"viewer","sdpOffer":"v=0\r\no=- 5811275597248577793 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=msid-semantic: WMS\r\n"} (index.js, line 70)
[Info] Received message: {"id":"viewerResponse","response":"accepted","sdpAnswer":"v=0\r\no=- 3748169328 3748169328 IN IP4 0.0.0.0\r\ns=Kurento Media Server\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\na=msid-semantic: WMS\r\n"} (index.js, line 70)
[Debug] SDP answer received, setting remote description (kurento-utils.js, line 320)
[Debug] Remote stream: – undefined (kurento-utils.js, line 294)
节点如何连接到 KMS
var argv = minimist(process.argv.slice(2), {
default: {
as_uri: 'https://localhost:8443/',
ws_uri: 'ws://37.228.89.170:8888/kurento'
}
});
解决方案
两种选择:
- 仅限 Safari 12 - 需要在 Safari 设置中启用实验性功能“启用 MDNS Ice Candidates”,高级、实验性功能
- Safari 11 - 您必须调用
getUserMedia({video: true, audio: true})
,并让用户接受对话框以允许在您的页面上播放视频和音频。即使您不想使用视频或音频,这也会导致 safari 在协商期间发送 ice-candidates
推荐阅读
- java - Java Servlet 头隐式对象
- python - TypeError: _init_subclassed_network() 在使用 TensorFlow Keras 时得到了一个意外的关键字参数“输入”
- reactjs - 在 this.props.history 更新后未设置 localStorage
- javascript - 为什么我觉得我定义的变量会出现解析错误?
- google-sheets-api - 当我只想要一个时,会创建多个电子表格
- css - 我在部署时缺少 CSS 中的特定属性值。为什么?
- java - 从另一个应用程序切换回来后如何阻止我的应用程序崩溃?
- c++ - C ++:根据变量将相同的对象实例化为多种类型之一
- javascript - 从搜索中传递道具,不会设置状态
- python - 自定义旋转器和命名器函数不适用于 python 中的 RotatingFileHandler 记录器处理程序?