请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

TURN服务器无法中继媒体流

在Android和浏览器互通中,我用coTurn作为TURN服务器,用国内的一个免费stun服务器作为STUN服务器。信令服务器和coTurn服务器部署在日本东京的一个远程主机上。
对自己搭建的coTurn服务器进行了测试,结果如下:
图片描述
浏览器的iceServer配置如下:
var iceServer = {
‘iceServers’:[
{
‘urls’: ‘stun:stun.voipbuster.com:3478’
},
{
‘urls’: ‘turn:webrtc.maizucity.com:3478’,
‘username’: ‘这里我填入了自己设的用户名’,
‘credential’:‘这里我填入了自己设的密码’
}
]
};

Android中iecServer配置如下:
PeerConnection.IceServer ice_server1 =
PeerConnection.IceServer.builder(“stun:stun.voipbuster.com:3478”)
.setPassword("")
.setUsername("")
.createIceServer();
PeerConnection.IceServer ice_server2 =
PeerConnection.IceServer.builder(“turn:webrtc.maizucity.com:3478”)
.setPassword(“这里我填入了自己设的密码”)
.setUsername(“这里我填入了自己设的用户名”)
.createIceServer();
iceServers.add(ice_server1);
iceServers.add(ice_server2);
结果就是当Android和浏览器在同个局域网中时可以进行音视频通信,但是如果不在一个局域网时,视频窗口就一直进行缓冲,无法播放Android端的视频,Android端也无法播放浏览器视频。但是日志显示接收到了tracks。如下图所示:
图片描述
也就是NAT无法穿越的情况下,TURN服务器好像无法对媒体流进行中继,无法进行音视频通信。请问老师,我这种情况问题出在哪里?如何让TURN服务器起作用?

正在回答 回答被采纳积分+3

1回答

李超 2020-04-14 17:16:40

你这个比较复杂,到课程群了沟通一下,我还要了解一些信息

0 回复 有任何疑惑可以回复我~
  • 提问者 madzheng #1
    群里也提问了,你说原因可能是端口没打开。但是防火墙关闭了,ufw status显示是inactive,还是不行。
    回复 有任何疑惑可以回复我~ 2020-04-15 10:50:21
  • 李超 #2
    国内防火墙与端口管理是分着的,这个你要咨询一下云厂商
    回复 有任何疑惑可以回复我~ 2020-04-15 11:01:24
  • 提问者 madzheng 回复 李超 #3
    现在如果初始化peerconncetion时添加'iceTransportPolicy': 'relay'设置,即强制使用turn服务器进行中继,那么turn服务器会发挥中继功能,可以进行音视频通话。但是如果不做这个设置,那么就会出现视频一直缓冲无法播放现象,turn服务器不会自动中继媒体流。不知道是不是因为STUN服务器和coTurn服务器不再一起的原因,因为布置coturn服务器的云主机只有一个公网ip,STUN服务器用的是别人的免费服务器。
    回复 有任何疑惑可以回复我~ 2020-04-22 17:10:02
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信