2016-05-30 194 views
0

按我的理解,从我刚才的问题:Kurento: STUN/TURNKurento:客户端TURN配置

webrtcendpoint.conf.ini配置的TURN服务器仅用于交换的冰候选人。我们还可以在webrtcendpoint.conf.ini中指定一个TURN服务器,因为我观察到的是如果我在webrtcendpoint.conf.ini中提供了2个或更多TRUN服务器,Kurento媒体服务器服务无法启动,这是正确的吗?

还有什么方法可以验证哪些STUN/TURN服务器在Kurento媒体服务器和两个对等设备之间使用?

我们在conferenceroom.js中提供的STUN/TURN将用于同级之间的实际媒体流/媒体管道。它是否正确 ?

如果我们在conferenceroom.js中提供了多个TURN服务器,那么TURN服务器最快/最快的响应时间将被选择用于两个对等设备之间的媒体流?与我们从Link获得响应时间相同。

也是我所观察到的是,如果在webrtcendpoint.conf.iniconferenceroom.js提供的TURN服务器不同,那么我们是不是能够看到远程参与者的视频,但如果两个TURN服务器是一样的话,我能看到远程参与者的视频。它是否正确 ?

编辑1:

在groupcall样本示例中,我们onExistingParticipants()onNewParticipants(),我们可以在receiveVideo()onExistingParticipants()定义iceServers如果我们kurentoUtils.WebRtcPeer.WebRtcPeerSendOnly()指定TURN服务器T1和TURN服务器T2所以会发生什么 in kurentoUtils.WebRtcPeer.WebRtcPeerRecvOnly()那么这两个TURN服务器之间会如何互相通信作为中继链?

回答

2

从webrtcendpoint.conf.ini配置的TURN服务器仅用于 用于交换候选冰。另外我们可以在webrtcendpoint.conf.ini中只指定一个TURN 服务器,因为我观察到的是如果我在webrtcendpoint.conf.ini中提供2个或更多TRUN服务器,则为 Kurento 媒体服务器服务无法启动,请问这是正确的吗?

它用于收集候选人,如果需要作为视频中继。您的KMS不会需要它,因为它的部署位置由您管理。如果你只能用STUN来完成,那么中继服务器将不会被使用。

只有一个服务器可以被配置,

另外是否有任何方式来验证这STUN/TURN服务器正在使用 在Kurento媒体服务器和两个对等体之间?

是的,WebRtcEndpoint有此

  • getStunServerPort()
  • getStunServerAddress()
  • getTurnUrl()

的STUN/TURN方法,这是我们在conferenceroom.js提供将用于 同级之间的实际媒体流量/ mediapipeline。它是否正确 ?

它将用于收集您的客户的候选人。此外,如果您的客户端位于需要使用中继服务器的NAT后面,它将使用conferenceroom.js中配置的那个。请记住,媒体路径可能不是对称的:从客户端 - >公司传输的媒体可能没有使用中继服务器,从KMS->客户端发送的媒体可能是由于客户位置的网络条件造成的。

如果我们提供conferenceroom.js多TURN服务器将开启 服务器最整洁的/最快的响应时间将在两个节点之间的媒体流 选择?同我们从这个链接获得响应时间一样。

是的,候选人被探测,最好的选择。

而且我所观察到的是,如果在 webrtcendpoint.conf.ini和conferenceroom.js提供的TURN服务器不同,那么我们 无法看到远程参与者的视频,但如果两个TURN 服务器是同样的,我可以看到远程参与者的视频。 这是正确的吗?

这不应该是这样,除非一个TURN工作,另一个不工作。


编辑

TURN服务器将不会在它们之间交换媒体。如果需要,它们将被用作与另一个同伴的中继。进程是

  • 每个对等端收集候选:主机,srflx(STUN)和中继(TURN)。不,如果TURN服务器不同,继电器候选人也将不同。
  • 候选人被送到另一个同伴。
  • 每个候选人被单独探测,并选择最好的一个。

由于所有媒体都通过KMS,因此它将是向中继服务器发送媒体的媒体。请记住,KMS始终处于同行之间。这将是

kms-> T2->客户端 客户端 - > T1->公里

即使连接为浏览器到浏览器中,TURN服务器将不能直接通信,因为它们将作为继电器动作媒体从一个同伴发送到另一个。这将是

client1-> T2->客户端2 client2-> T1->客户端1

+0

感谢您的回复,我想实现是强制的媒体两个方向上使用TURN服务器流。此外,如果我从世界的多个位置提供TURN服务器,并且有人试图加入此组呼,则由ICE候选人使用/分配的TURN服务器将是距离用户最近的一个。这可以通过在'conferenceroom,js'中提供TURN服务器列表来实现吗? –

+0

“TURN服务器不会直接通信,因为它们将作为从一台服务器发送到另一台服务器的媒体的中继”,这是否意味着两台TURN服务器可以相互之间进行中继? 你也可以告诉我们在'conferenceroom.js'中指定TURN服务器时使用的'webrtcendpoint.conf.ini'中的TURN服务器在哪里。 –

+1

这是一个错字。转向服务器不交换媒体,它们充当从同伴发送的媒体的中继。由于[您的其他问题](https://stackoverflow.com/questions/37162476/kurento-stun-turn)中明确指出,除非您这么做,否则不会共享STUN/TURN配置。同行(和KMS只是另一个同伴)可以有不同的STUN/TURN配置。 – igracia