【转】WEBRTC P2P turn穿透

部署WebRTC 或 SIP p2p 方案时经常会遇到p2p 无法穿透的环境,

这时就是TunServer 的用武之地了。

这里我们使用turnserver-0.7.3 

下载confuse依赖库

 

wget http://savannah.nongnu.org/download/confuse/confuse-2.7.tar.gz
tar zxvf confuse-2.7.tar.gz
cd confuse*
./configure
make && make install

 

下载

 

wget http://downloads.sourceforge.net/project/turnserver/turnserver-0.7.3.tar.bz2
tar jxvf turnserver-0.7.3.tar.bz2
cd turnserver*
./configure
make && make install

 

编辑配置文件

 

将extra 中的配置文件模版拷贝到/etc目录下,假设您的ip 是 1.2.3.4

 

1,配置文件

 

 

cp extra/turnserver.conf.template  /etc/turnserver.conf
vi /etc/tunserver.conf

 

修改

 

listen_address = { "1.2.3.4" } #你的公网地址

 

修改 ## Daemon mode.

 

daemon = true # 修改为后台服务方式

 

修改带宽限制

 

## Allocation bandwidth limitation (in KBytes/s).
## 0 value means bandwidth quota disabled.
bandwidth_per_allocation = 1024


## Restricted user bandwidth (in KBytes/s).
## 0 value means bandwidth limitation disabled.
restricted_bandwidth = 0

 

 

2,认证用户文件

 

cp extra/turnusers.txt.template /etc/turnusers.txt

vi /etc/turnusers.txt

 

添加一行或多行认证信息格式为    用户名:密码:domain:authorized

 

例如下面的行:
700:700pass:domain.org:authorized
添加完成后,就可以在webrtc 里面使用stun 和tun server 了。
var configuration = {
  'iceServers': [{
    { 'url' : 'stun:1.2.3.4'} ,

    { 'url' : ‘turn:700@1.2.3.4',credential : '700pass'}
  }]
};
 

转自:http://blog.163.com/sir_876/blog/static/11705223201422810528434/

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebRTC (Web Real-Time Communication) 是一种用于实时通信的技术,特别适用于浏览器和移动设备之间的点对点(P2P)连接,比如视频聊天、文件共享等。在安卓应用中实现WebRTC P2P,你需要使用Google的开源库,如libjitsi-mobix(基于Jitsi Meet)或Janus Gateway。 以下是一个简单的步骤概述: 1. 添加依赖:在你的项目中引入WebRTC相关的库,例如`org.webrtc:webrtc:2.0.x`(具体版本根据Android Studio的要求选择)。 2. 初始化:在你的Activity或Fragment中初始化WebRTC引擎,创建PeerConnection实例,这通常在`onCreate`或`onResume`方法中完成。 ```java WebRtcEngineFactory engineFactory = new WebRtcEngineFactory(context); WebRtcEngine engine = engineFactory.createWebRtcEngine(); PeerConnectionFactory peerConnectionFactory = PeerConnectionFactory.createDefaultPeerConnectionFactory(); ``` 3. 创建VideoCapturer:如果你的应用需要获取本地视频流,你需要创建一个`VideoCapturer`。 4. 建立连接:创建`RTCPeerConnection`,加入媒体流,然后调用`createOffer()`生成SDP offer。 ```java SessionDescriptionDescription offer = peerConnectionFactory.createOffer(); peerConnection.setLocalDescription(offer); ``` 5. 处理ICE候选:接收并处理对端发送的ICE候选,使用`addIceCandidate()`方法。 6. 加入/接听呼叫:对于接收呼叫,需要调用`setRemoteDescription()`,然后可能需要进行SDP协商。 7. 实现数据通道:如果需要双向数据传输,使用DataChannel。 8. 关闭连接:在不需要的时候,记得调用`close()`方法释放资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值