TURN服务器无法中继媒体流

来源:16-5 实战-Andorid与浏览器互通

madzheng

2020-04-14

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

写回答

1回答

李超

2020-04-14

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

0
4
李超
coturn 服务本身就包含了stun 服务,不用单独配置,但你这个问题应该不是它引起的;而是WebRTC 已经检测到更好的非relay 方式,但实际传输数据时,数据传输不了
2020-04-22
共4条回复

5G时代必备音视频WebRTC实时互动直播技术入门与实战

低门槛掌握WebRTC技术,高效率快速构建一套音视频实时互动系统

2541 学习 · 728 问题

查看课程