在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服务器起作用?