如何让WEBRTC 支持P2P RELAY

一:下载
libevent下载
http://libevent.org/
turnserver下载
https://github.com/coturn/coturn  new
https://github.com/freewebsys/rfc5766-turn-server old
二:配置
添加用户密码
1. 直接修改 turnuserdb.conf
   添加一行 sjz:111111
2. turnadmin 工具生成 会提示生成到哪个文件
   turnadmin -a -u baoyu -r by -p 111111  
   生成用户和秘钥
   hxy:0xcb39d7e60e8b6e4e98b12a93f2f32bf1
  注意: 0x 为秘钥 没有则为密码
  WEBRTC中只支持密码
  eg:
  webrtc::PeerConnectionInterface::RTCConfiguration config;
  webrtc::PeerConnectionInterface::IceServer server;
  server.urls.push_back("stun:192.168.1.116");
  server.urls.push_back("turn:192.168.1.116");
  server.username = "baoyu";
  server.password = "111111";
  config.servers.push_back(server);

列车所有用户
 turnadmin -l
 
服务器启动
turnserver -v  -r by  (-r 的参数必须与之前turnadmin 中的 -r 参数一致)
也可在命令行中传递用户和密码
./turnserver -v --user=hxy:111111 --user=sjz:111111 -r by

三:配置WEBRTC 强制RELAY
google WebRTC - how to set always to use TURN server?
http://stackoverflow.com/questions/22130311/webrtc-how-to-set-always-to-use-turn-server
修改参数
  webrtc::PeerConnectionInterface::RTCConfiguration config;
  webrtc::PeerConnectionInterface::IceServer server;
  server.urls.push_back("stun:192.168.1.116");
  server.urls.push_back("turn:192.168.1.116");
  server.username = "baoyu";
  server.password = "111111";
  config.type = webrtc::PeerConnectionInterface::kRelay;
  config.servers.push_back(server);

========================================运行日志===============================
turnuser.db
hxy:0xcb39d7e60e8b6e4e98b12a93f2f32bf1
baoyu:111111

root@ubuntu:~# ./turnserver -v -r by
0: log file opened: /var/log/turn_24305_2016-07-14.log
0:
RFC 3489/5389/5766/5780/6062/6156 STUN/TURN Server
Version Citrix-3.2.5.9 'Marshal West'
0:
Max number of open files/sockets allowed for this process: 65536
0:
Due to the open files/sockets limitation,
max supported number of TURN Sessions possible is: 32500 (approximately)
0:

==== Show him the instruments, Practical Frost: ====

0: TLS supported
0: DTLS supported
0: Redis is not supported
0: PostgreSQL is not supported
0: MySQL is not supported
0: OpenSSL compile-time version 0x1000207f: fresh enough
0: Default Net Engine version: 3 (UDP thread per CPU core)

=====================================================

0: Config file found: /root/turnserver.conf
0: Config file found: /root/turnserver.conf
0: Config file found: /root/turnuserdb.conf
0:
CONFIGURATION ALERT: you specified long-term user accounts, (-u option)
 but you did not specify the long-term credentials option
 (-a or --lt-cred-mech option).
  I am turning --lt-cred-mech ON for you, but double-check your configuration.
0: WARNING: cannot find certificate file: turn_server_cert.pem (1)
0: WARNING: cannot start TLS and DTLS listeners because certificate file is not set properly
0: WARNING: cannot find private key file: turn_server_pkey.pem (1)
0: WARNING: cannot start TLS and DTLS listeners because private key file is not set properly
0: NO EXPLICIT LISTENER ADDRESS(ES) ARE CONFIGURED
0: ===========Discovering listener addresses: =========
0: Listener address to use: 127.0.0.1
0: Listener address to use: 192.168.1.116
0: Listener address to use: ::1
0: =====================================================
0: Total: 1 'real' addresses discovered
0: =====================================================
0: NO EXPLICIT RELAY ADDRESS(ES) ARE CONFIGURED
0: ===========Discovering relay addresses: =============
0: Relay address to use: 192.168.1.116
0: Relay address to use: ::1
0: =====================================================
0: Total: 2 relay addresses discovered
0: =====================================================
0: pid file created: /var/run/turnserver.pid
0: IO method (main listener thread): epoll (with changelist)
0: Wait for relay ports initialization...
0:   relay 192.168.1.116 initialization...
0:   relay 192.168.1.116 initialization done
0:   relay ::1 initialization...
0:   relay ::1 initialization done
0: Relay ports initialization done
0: IO method (general relay thread): epoll (with changelist)
0: turn server id=0 created
0: IPv4. TCP listener opened on : 127.0.0.1:3478
0: IPv4. TCP listener opened on : 127.0.0.1:3479
0: IPv4. TCP listener opened on : 192.168.1.116:3478
0: IPv4. TCP listener opened on : 192.168.1.116:3479
0: IPv6. TCP listener opened on : ::1:3478
0: IPv6. TCP listener opened on : ::1:3479
0: IO method (general relay thread): epoll (with changelist)
0: turn server id=1 created
0: IPv4. UDP listener opened on: 127.0.0.1:3478
0: IPv4. TCP listener opened on : 127.0.0.1:3478
0: IPv4. UDP listener opened on: 127.0.0.1:3479
0: IPv4. UDP listener opened on: 192.168.1.116:3478
0: IPv4. UDP listener opened on: 192.168.1.116:3479
0: IPv6. UDP listener opened on: ::1:3478
0: IPv4. TCP listener opened on : 127.0.0.1:3479
0: IPv4. TCP listener opened on : 192.168.1.116:3478
0: IPv4. TCP listener opened on : 192.168.1.116:3479
0: IPv6. TCP listener opened on : ::1:3478
0: IPv6. TCP listener opened on : ::1:3479
0: IPv6. UDP listener opened on: ::1:3479
0: Total UDP servers: 0
0: Total General servers: 2
0: IO method (auth thread): epoll (with changelist)
0: IO method (cli thread): epoll (with changelist)
0: IPv4. CLI listener opened on : 127.0.0.1:5766
3: handle_udp_packet: New UDP endpoint: local addr 192.168.1.116:3478, remote addr 192.168.1.113:53129
3: session 001000000000000001: user <>: incoming packet BINDING processed, success
3: handle_udp_packet: New UDP endpoint: local addr 192.168.1.116:3478, remote addr 192.168.1.113:53131
3: session 001000000000000002: user <>: incoming packet BINDING processed, success
3: handle_udp_packet: New UDP endpoint: local addr 192.168.1.116:3478, remote addr 192.168.1.113:53133
3: session 001000000000000003: user <>: incoming packet BINDING processed, success
3: handle_udp_packet: New UDP endpoint: local addr 192.168.1.116:3478, remote addr 192.168.1.113:53135
3: session 001000000000000004: user <>: incoming packet BINDING processed, success
4: session 001000000000000001: user <>: incoming packet message processed, error 401: Unauthorised
4: session 001000000000000002: user <>: incoming packet message processed, error 401: Unauthorised
4: session 001000000000000003: user <>: incoming packet message processed, error 401: Unauthorised
4: session 001000000000000004: user <>: incoming packet message processed, error 401: Unauthorised
4: IPv4. Local relay addr: 192.168.1.116:63300
4: session 001000000000000001: new, username=<baoyu>, lifetime=600
4: session 001000000000000001: user <baoyu>: incoming packet ALLOCATE processed, success
4: IPv4. Local relay addr: 192.168.1.116:53067
4: session 001000000000000002: new, username=<baoyu>, lifetime=600
4: session 001000000000000002: user <baoyu>: incoming packet ALLOCATE processed, success
4: IPv4. Local relay addr: 192.168.1.116:49434
4: session 001000000000000003: new, username=<baoyu>, lifetime=600
4: session 001000000000000003: user <baoyu>: incoming packet ALLOCATE processed, success
4: IPv4. Local relay addr: 192.168.1.116:63580
4: session 001000000000000004: new, username=<baoyu>, lifetime=600
4: session 001000000000000004: user <baoyu>: incoming packet ALLOCATE processed, success
4: handle_udp_packet: New UDP endpoint: local addr 192.168.1.116:3478, remote addr 192.168.1.226:59724
4: session 000000000000000001: user <>: incoming packet BINDING processed, success
4: session 001000000000000004: refreshed, username=<baoyu>, lifetime=0
4: session 001000000000000004: user <baoyu>: incoming packet REFRESH processed, success
4: session 001000000000000003: refreshed, username=<baoyu>, lifetime=0
4: session 001000000000000003: user <baoyu>: incoming packet REFRESH processed, success
4: session 001000000000000002: refreshed, username=<baoyu>, lifetime=0
4: session 001000000000000002: user <baoyu>: incoming packet REFRESH processed, success
4: session 000000000000000001: user <>: incoming packet message processed, error 401: Unauthorised
4: IPv4. Local relay addr: 192.168.1.116:63258
4: session 000000000000000001: new, username=<hxy>, lifetime=600
4: session 000000000000000001: user <hxy>: incoming packet ALLOCATE processed, success
4: session 000000000000000001: peer 192.168.1.116 lifetime updated: 300
4: session 000000000000000001: user <hxy>: incoming packet CREATE_PERMISSION processed, success
4: session 001000000000000001: peer 192.168.1.116 lifetime updated: 300
4: session 001000000000000001: user <baoyu>: incoming packet CREATE_PERMISSION processed, success
4: session 001000000000000001: peer 192.168.1.116 lifetime updated: 600
4: session 001000000000000001: user <baoyu>: incoming packet CHANNEL_BIND processed, success
4: session 000000000000000001: peer 192.168.1.116 lifetime updated: 600
4: session 000000000000000001: user <hxy>: incoming packet CHANNEL_BIND processed, success
5: session 001000000000000004: closed (2nd stage), user <baoyu>, local 192.168.1.116:3478, remote 192.168.1.113:53135, reason: allocation timeout
5: session 001000000000000003: closed (2nd stage), user <baoyu>, local 192.168.1.116:3478, remote 192.168.1.113:53133, reason: allocation timeout
5: session 001000000000000002: closed (2nd stage), user <baoyu>, local 192.168.1.116:3478, remote 192.168.1.113:53131, reason: allocation timeout
5: session 000000000000000001: usage: username=<hxy>, rp=55, rb=2872, sp=1993, sb=1354716
5: session 001000000000000001: usage: username=<baoyu>, rp=1994, rb=1355013, sp=54, sb=2864
6: session 000000000000000001: usage: username=<hxy>, rp=49, rb=2220, sp=1999, sb=1165526
6: session 001000000000000001: usage: username=<baoyu>, rp=1999, rb=1165526, sp=49, sb=2220
7: session 001000000000000001: usage: username=<baoyu>, rp=2010, rb=1177357, sp=38, sb=1796
7: session 000000000000000001: usage: username=<hxy>, rp=38, rb=1796, sp=2010, sb=1177359
8: session 001000000000000001: usage: username=<baoyu>, rp=2010, rb=1260380, sp=38, sb=1780
8: session 000000000000000001: usage: username=<hxy>, rp=38, rb=1780, sp=2010, sb=1260380
9: session 000000000000000001: usage: username=<hxy>, rp=43, rb=2112, sp=2005, sb=1150734
9: session 001000000000000001: usage: username=<baoyu>, rp=2005, rb=1149884, sp=43, sb=2112

WEBRTC TURNSERVER配置相关推荐

  1. WEBRTC需要,配置自己的 TURN/STUN 服务

    1.服务器环境 UBUNUTU 16.04LTS : 2.安装需要的依赖 sudo apt-get -y install sqlite libsqlite3-dev libevent-dev libs ...

  2. 在centos8环境下用asterisk18配置pjsip和webrtc音视频通话教程(一)

    记录一下2021年采用asterisk18配置pjsip分机和webrtc音视频的教程,测试采用浏览器WebRTC呼叫软电话sip分机,WebRTC接听之间的拨号和内部SIP分机和浏览器WebRTC分 ...

  3. turnserver (coturn + redis) 配置ICE server 临时用户密码【实践】

    背景 前端连接turn服务时一般都需要设置账号密码,由于都是在js中配置的,长期凭据相对临时用户安全性会差很多,本文通过程序生成临时的账号密码,把临时凭据设置到Redis中,turn服务验证的时候直接 ...

  4. webrtc android 声音处理,WebRTC 安卓有视频无声音问题解决

    昨日遇到客户反馈WebRTC在安卓平台出现有视频无声音的故障. 系统运行在Android 7.1平台,是小型公证一体机.采用自编译Chromium内核封装Web页面混合开发实现. 在排除硬件问题后,测 ...

  5. WebRTC 一对一语音通话中音频端到端分段延迟分析

    WebRTC 一对一语音通话中的音频端到端延迟指从一个音频信号被发送端采集,到同一个信号被接收端播放出来这整个过程的时间.音频端到端延迟由多个阶段组成.音频端到端处理的冲采样.混音.回声和降噪等操作会 ...

  6. 手把手教你使用WebRTC

    WebRTC可以实现实时通信,他可以直接建立两个浏览器之间点对点的连接,在连接中实时传输媒体流和任何数据.这就非常适合进行屏幕共享. WebRTC使用起来还是挺复杂的,具体的介绍MDN非常详细,不过网 ...

  7. 【音视频】zlmediakit总结一

    目录 推拉流理论 推拉流测试 按需拉流测试 ffplay直接播放云录相 webrtc 使用 实操 cmake专题 相关知识 问题 参考资料 推拉流理论   推流:将直播的内容推送至服务器的过程.   ...

  8. WebRTC服务器的配置

    WebRTC服务器由三部分组成: 1. 房间服务器:对客户端提供信令服务器的配置信息,通过http协议实现 2. 信令服务器:将本地端的condidate经过SDP协议封装,通过websocket发送 ...

  9. WebRTC源码中turnserver的使用方法

    WebRTC的源码中自带了一个turnserver,编译之后,会在out/Default下生成一个turnserver文件,可以充当STUN和TURN server.用法如下: ./turnserve ...

  10. srs配置WebRTC

    1. WebRTC简介 WebRTC由Google发起的实时通讯解决方案,由一组标准.协议和JavaScript API组成,用于实现浏览器之间(端到端之间)的音频.视频及数据共享.WebRTC不需要 ...

最新文章

  1. Linux文件压缩与解压缩
  2. Android APP性能优化
  3. 好物推荐 | 轻薄神器,妈妈再也不用担心我的颈椎了
  4. .NET开发的一些积累
  5. dvd清洗碟效果好吗_用什么清洗抽油烟机效果比较好?有哪些注意事项?
  6. 案例 github_2019年12月Github上最热门的Java开源项目,速来围观!
  7. IOS – OpenGL ES 调节图像色度 GPUImageHueFilter
  8. Python模块学习 - 用tinify模块压缩和优化图片
  9. nutz 自定义sql的使用
  10. java 正则regex_Java中的正则表达式– Java Regex示例
  11. 基于PaddleHub实现简易人像抠图
  12. Java 用两个队列实现一个栈
  13. 论文发表都有哪些期刊
  14. macos系统镜像iso_Windows10操作系统iso镜像、微软正版软件下载站:MSDN,我告诉你...
  15. 我热爱计算机作文450字,热爱音乐的我作文450字
  16. 关于office2010的体验
  17. Virbox Protector AAB 加固-兼容 Google Play 上架
  18. 成都的IT研发产业和芯片产业等情况:2006年初的数据。(转)
  19. PostgreSQL 来自欧罗巴Patroni watchdog 汪汪汪 5
  20. 阿里云获取token(亲测可用)

热门文章

  1. 无需拆机,Kindle 全系列 5.12.2.2 ~ 5.14.2版本如何越狱?如何安装第三方插件
  2. mysql无法修改表字段
  3. 广数系统加工中心编程_数控铣床与数控加工中心操作与编程
  4. Linux C 语言 Socket 通信(多对多)多线程实现
  5. JavaWeb项目框架
  6. 机器学习笔记:训练集、验证集与测试集
  7. matlab随机线性微分方程,基于MATLAB的随机线性微分方程的求解
  8. 贝叶斯网络(概率图模型)
  9. 2021年美赛M奖,圆我两年建模梦
  10. java编写一个测试类_java写一个类,并测试它