WebRTC实战-第一章-理论基础

news2024/10/7 16:15:47

目录

  • webrtc-demo
  • 基础理论
    • ICE server/信令server/webrtc server的区别和联系
  • coturn
  • 安装coturn穿透和转发服务器
    • 安装依赖
      • ubuntu系统
      • centos系统
    • 编译安装coturn
    • 快速测试启动
    • 自定义配置启动
      • 自定义配置
      • 真实配置
      • 新建start.sh
    • 测试地址,分别测试stun 和 turn
      • 打开测试地址
      • 测试stun
      • 测试 turn中继服务
  • 测试网络情况
    • 安装
    • 查看网络情况

webrtc-demo

https://webrtc.github.io/samples/src/content/peerconnection/restart-ice/
ICE server/信令server/webrtc server的区别和联系

基础理论

ICE server/信令server/webrtc server的区别和联系

  • ICE server
    分为stun/turn 两部分, 实现p2p连接建立.
    stun server: 负责p2p连接建立和媒体格式协商.
    turn server: 负责数据转发(一般情况下是p2p建立失败时, 通过turn server转发数据).
    通常stun server与turn server为同一个server, 由coturn 实现.

  • 信令server:
    辅助p2p连接建立. 在p2p连接建立之前的数据交互是通过信令server完成的.

  • webrtc server:
    一般用于视频会议等场景. 主要针对多对多通信场景.

如何区分呢?
如果只需要实现1对1或者1对多通信, 我们只需要信令server及ICE server.
如果要实现多对多通信, 则需要全部(也就是需要信令server, ICE server, webrtc server).

coturn

coturn 服务器完整的实现了 STUN/TURN/ICE 协议,支持 P2P 穿透防火墙。主要用于 webrtc 等点对点视频音频通话。

coturn 支持 tcp, udp, tls, dtls 连接;支持 linux bsd solaris mac os, 暂不支持 windows.
对于局域网中的webrtc是不需要coturn,因为他们自己进行视频流的传输,但通常的应用场景,在同一个局域网下概率是比较低的,因此我们需要把流推到服务器上,另外一端在从服务器把流拉下来。coturn做为turnserver做的是这一部分的工作。当然coturn也可以作为 stun服务器,这篇文章先不讲,只讲turnserver这部分的内容。

turnserver的原理是根据webrtc的协议而定的,最主要的功能就是转发webrtc上的数据流,在转发数据流中,最关键的是两样,一个是创建流端口连接,一个是匹配端口。

当webrtc的客户端配置上了ICE_SERVER 以后,客户端会去ICE_SERVER 请求一个端口用来传递数据流,这就是所谓的ice,在互换了ice以后,会选出一个通路来匹配到另一端的通路,数据在服务端中进行转发传递。

安装coturn穿透和转发服务器

安装依赖

ubuntu系统

sudo apt-get install libssl-dev
sudo apt-get install libevent-dev

centos系统

sudo yum install openssl-devel
sudo yum install libevent-devel

编译安装coturn

git clone https://github.com/coturn/coturn
cd coturn
./configure
make 
sudo make install

看到如下画面说明安装成功
在这里插入图片描述
默认情况下,coturn使用SQLite数据库进行用户和设置。当TurnServer第一次启动时,会自动创建(空)该数据库。

创建软链接

ln -s /usr/local/coturn/coturn/bin/turnserver /usr/bin/turnserver
ln -s /usr/local/coturn/coturn/bin/turnadmin /usr/bin/turnadmin

快速测试启动

# 命令后加&, 后台执行起来后按ctrl+c 不会停止
root@HP:/usr/local/coturn/coturn# nohup turnserver -L 0.0.0.0 -a -u coturn:coturn_123456 -v -f -r nort.gov &

# 然后查看响应的端口号3478是否存在进程
lsof -i:3478

自定义配置启动

自定义配置

listening-device=eth0						# 网卡名称
listening-port=3478							# turnserver监听UDP/TCP端口
tls-listening-port=5349					# turnserver监听TLS/DTLS端口
listening-ip=0.0.0.0							# 内网IP,但是设置内网IP会导致外部连接不到内网IP,设置0.0.0.0即可
relay-ip=10.120.92.4						# 一定是内网IP,不然relayIP会获取不到
external-ip=X.X.X.X						# 一定是公网IP
min-port=49152								# 最小端口
max-port=65535								# 最大端口
user=user:123456							# 用户名:密码
realm=X.X.X.X								#域名或者公网IP
lt-cred-mech

真实配置

注意不需要配置:external-ip
在/usr/local/coturn/coturn下新建turnserver.conf,内容如下:

# TURN server name and realm
realm=DOMAIN
server-name=turnserver

# Use fingerprint in TURN message
fingerprint

# IPs the TURN server listens to
listening-ip=0.0.0.0

# External IP-Address of the TURN server
#external-ip=122.51.240.198
#external-ip=192.168.0.44

# Main listening port
listening-port=3478

#tls-listening-port=5044

# Further ports that are open for communication
min-port=10000
max-port=20000

# Log file path
log-file=/usr/local/coturn/turnserver.log

# Enable verbose logging
verbose

# Specify the user for the TURN authentification
user=coturn:coturn_123456

# Enable long-term credential mechanism
lt-cred-mech

新建start.sh


killall -9 turnserver
rm -rf nohup.out
#nohup turnserver -L 0.0.0.0 -a -u coturn:coturn_123456 -v -f -r nort.gov &
#nohup turnserver -L 0.0.0.0 -a -u coturn:coturn_123456 -v -f -r -c turnserver.conf nort.gov &
turnserver -L 0.0.0.0 -a -v -f -r -c turnserver.conf nort.gov

测试地址,分别测试stun 和 turn

打开测试地址

https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

测试stun

stun:192.168.0.23:3478
coturn
coturn_123456

检测网站
注意使用火狐游览器更好点
谷歌游览器会报错:

Note: errors from onicecandidateerror above are not neccessarily fatal. For example an IPv6 DNS lookup may fail but relay candidates can still be gathered via IPv4.
The server turn:X.X.X.X:3478?transport=udp returned an error with code=401:

Note: errors from onicecandidateerror above are not neccessarily fatal. For example an IPv6 DNS lookup may fail but relay candidates can still be gathered via IPv4.
The server stun:X.X.X.X:3478 returned an error with code=701:
STUN allocate request timed out.

在这里插入图片描述
在这里插入图片描述

测试 turn中继服务

在这里插入图片描述
此时查看日志

root@HP:/usr/local/coturn/coturn# tail -f nohup.out 

显示如下
在这里插入图片描述

测试网络情况

安装

apt install sysstat

查看网络情况

sudo sar -n DEV 1

20时44分38秒     IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
20时44分39秒        lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
20时44分39秒    enp1s0    164.00    243.00     11.68     41.22      0.00      0.00      0.00      0.34
20时44分39秒    wlp2s0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
20时44分39秒 br-81c00f46f7c3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
20时44分39秒 br-cca53579becd      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
20时44分39秒   docker0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
20时44分39秒 br-589307c722b2     50.00      0.00      2.93      0.00      0.00      0.00      0.00      0.00

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/51925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

jsp汽车销售管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp汽车销售管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用…

Spire.Doc 10.11.9 支持设置形状填充颜色的透明度

度娘找破解版Spire.Doc for .NET是一个专业的Word .NET库,专门为开发人员设计,用于在任何.NET 平台(Target .NET Framework、.NET Core、.NET Standard、 .NET 5.0、.NET 6.0、Xamarin 和 Mono Android),具有快速和高质…

纷享销客2022新增长系列之《高科技行业橙皮书》重磅发布

二十大报告进一步提出建设数字中国,加快发展数字经济。这意味着,对于各行业而言,充分运用数字化技术推动业务变革、效率变革、流程变革,是各行各业发展的必经之路。 高科技行业作为一个知识与技术密度性高的行业,具备技…

【pen200-lab】10.11.1.146

pen200-lab 学习笔记 【pen200-lab】10.11.1.146 🔥系列专栏:pen200-lab 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📆首发时间:🌴2022年11月27日🌴 🍭作…

day11-12【代码随想录】删除链表的倒数第N个节点、链表相交、字符串中第二大的数字

文章目录前言一、删除链表的倒数第N个节点(力扣19)二、链表相交(力扣160)三、字符串中第二大的数字(力扣1796)前言 1、删除链表的倒数第N个节点 2、链表相交 3、字符串中第二大的数字 一、删除链表的倒数…

苹果mac装双系统?关于Parallels Desktop你需要知道的相关知识

很多朋友用上了MacBook&#xff0c;但很多软件只能在Windows系统来使用&#xff0c;小白想要在MacBook上装Windows&#xff0c;需要花费大量的时间&#xff0c;所以在此&#xff0c;教大家在MacBook上安装虚拟机&#xff0c;来运行Windows系统。 <目录> 一、你是否适合…

【使用 BERT 的问答系统】第 4 章 :BERT 算法详解

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

岩藻多糖-聚乙二醇-转铁蛋白,Transferrin-PEG-Fucoidan,转铁蛋白-PEG-岩藻多糖

岩藻多糖-聚乙二醇-转铁蛋白,Transferrin-PEG-Fucoidan,转铁蛋白-PEG-岩藻多糖 中文名称&#xff1a;岩藻多糖-转铁蛋白 英文名称&#xff1a;Fucoidan-Transferrin 别称&#xff1a;转铁蛋白修饰岩藻多糖&#xff0c;Tf-岩藻多糖 溶解性&#xff1a;溶于大部分有机溶剂&am…

【微信小程序】如何上传uniApp开发的微信小程序?

uniApp微信小程序如何上传&#xff1f;首先确保已经安装了Hbuilder X 和微信开发者工具确保拥有配置了权限的账号&#xff0c;需要使用此账号的AppId首先联系管理员&#xff0c;让管理员给账号配置权限**[打开微信公众平台地址](https://mp.weixin.qq.com/)**在微信公众平台地址…

微信小程序-HTML标签和wxml比对

一、直接将HTML标签引入微信中 <rich-text nodes"<h3 stylecolor:green; text-align:center;> 通过nodes将HTML标签放到微信中</h3>"> </rich-text> 二、轮播图 <!-- indicator-dots 显示轮播图的小圆点 autoplay circular自动播放&…

C. Qpwoeirut And The City Codeforces Round #809 (Div. 2)

传送门 题意&#xff1a;有n栋楼&#xff0c;每栋楼的高度为&#xff0c;对美丽的楼的定义如下&#xff1a; 对于&#xff0c;如果并且,那么就说明这栋楼是美丽的。&#xff08;所以第一栋楼和最后一栋一定不是美丽的&#xff09; lk现在可以将所有的楼的高度增加任意值&…

量化研究丨波动与盈利关系研究系列(一)

ˇ 量化策略开发&#xff0c;高质量社群&#xff0c;交易思路分享等相关内容 今天我们讨论个议题&#xff0c;一是波动与盈利关系&#xff0c;文章非常长&#xff0c;涉及图片与文字结合内容阐述&#xff0c;会员朋友可以通过邮箱群发word文档进行清晰阅读。&#xff08;文章设…

外卖点餐自取连锁多店小程序开发

外卖点餐自取连锁多店小程序开发 功能// 外卖&自取&#xff1a;支持商家自送外卖和用户自取购买模式&#xff0c;暂不支持接入美团/饿了么。 会员签到&#xff1a;支持签到获取积分功能&#xff0c;积分可用于积分商城兑换商品或兑换优患券。 积分商城&#xff1a;后台添加…

week 6 贪心

P1223 排队接水 排队接水 题目描述 有 nnn 个人在一个水龙头前排队接水&#xff0c;假如每个人接水的时间为 TiT_iTi​&#xff0c;请编程找出这 nnn 个人排队的一种顺序&#xff0c;使得 nnn 个人的平均等待时间最小。 输入格式 第一行为一个整数 nnn。 第二行 nnn 个整…

【JavaScript 逆向】极验三代滑块验证码逆向分析

声明 本文章中所有内容仅供学习交流&#xff0c;相关链接做了脱敏处理&#xff0c;若有侵权&#xff0c;请联系我立即删除&#xff01; 案例目标 极验验证码 demo&#xff1a;aHR0cHM6Ly93d3cuZ2VldGVzdC5jb20vZGVtby8 滑动验证码&#xff1a;aHR0cHM6Ly93d3cuZ2VldGVzdC5j…

Mysql相关的各种类型文件

Mysql相关的各种类型文件文件大汇总Mysql数据库自身文件参数文件日志文件错误日志慢查询日志常用参数设置慢查询日志文件慢查询表更换引擎通用日志二进制日志套接字文件pid文件表结构定义文件Innodb存储引擎的文件表空间文件redo日志文件大汇总 Mysql和Innodb启动和运行过程中…

[附源码]计算机毕业设计springboot市场摊位管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

蓝桥杯嵌入式AD采样解析

文章目录前言一、什么是AD采样二、原理图查看及cubeMX配置三、代码解析总结前言 本文将带大家学习AD采样。 一、什么是AD采样 原理部分这里就不多介绍了&#xff0c;给大家推荐一篇文章大家自己去了解一下即可。 AD采样 二、原理图查看及cubeMX配置 在板子上面有两个可调电…

野火FPGA系列教学视频---多路选择器

大体思路是&#xff1a;有两路输入信号&#xff0c;一个选通信号&#xff0c;当选通信号高电平时&#xff0c;按输入1的波形&#xff0c;当选通信号为低电平时&#xff0c;按输入2的波形。 大致波形图如下图&#xff1a; rtl代码如下&#xff1a; module mux2_1 (input wir…

企业应如何选择合适的电子采购软件?

现如今是供应链竞争占据主导地位的互联网时代&#xff0c;如果使用一款高效的电子采购软件&#xff0c;不仅能为企业带来采购时的便捷&#xff0c;还成就了企业整个采购供应链的高速流畅运转&#xff0c;促进买卖双方的良性合作。 现在的市场中电子采购软件有很多&#xff0c;…