怎么知道webrtc的数据是走的中继还是走的p2p
吐槽, 你的分类错了, 导致不能贴代码。
github:
priologic/easyrtc
webRTC/webRTCio
自己开发推荐使用priologic/easyrtc
只是玩玩 对于webRTCio使用简单
npm install webrtcio
Client
<video id="local" autoplay="autoplay"></video>
<video id="remote" autoplay="autoplay"></video>
<script src="/webrtciojs"></script>
<script>
// note: make sure hostname available to all connecting clients
// (ie probably not `localhost`)
rtcconnect('ws://yourserveraddress:8001');
rtccreateStream({"video": true, "audio":false}, function(stream){
// get local stream for manipulation
rtcattachStream(stream, 'local');
});
rtcon('add remote stream', function(stream){
// show the remote video
rtcattachStream(stream, 'remote');
});
// more rtc callbacks are available
</script>
Server
var webRTC = require('webrtcio')listen(8001);
//then a bunch of callbacks are available
服务器 :
公网服务器 购买带有公网IP的云服务器
镜像 :
ubuntu 1604
ubuntu16镜像已经带有coturn的源 可以直接apt-get安装
STUN/TURN的默认端口是3478
除此之外还可以通过 https://webrtcgithubio/samples/src/content/peerconnection/trickle-ice/ 测试ice
介绍
应用场景
要安装的服务
OpenVidu Server (openvidu-server) :OpenVidu 的核心服务,管理kurento server之外的业务功能
Kurento Media Server (kms) : Kurento 媒体服务器提供核心的webrtc 接入、转化、过滤等功能。
Coturn (coturn) : 提供Stun, trun 等服务,用于nat 穿透功能
Redis (redis) : database to manage users in Coturn server
Nginx (nginx): a reverse proxy used to configure SSL certificate and to allow both Openvidu Server and the Application to be served in the standard https port (443)
ideoconference Application (app): OpenVidu Call application or any other application Can be disabled
所有的这些服务通过docker container 的方式安装。
安装
1。 确定以安装docker 和docker compose
如果未安装,可以参考 ubuntu下docker, docker compose安装 的说明
检查文件,发现没有copy隐藏文件env, 于是使用同样的命令显示copy env文件。
#cp env -t /opt/openvidu
生成签名
turn github 地址: https://githubcom/coturn/coturn
测试是否安装成功,若有路径表示成功
复制出 turnserverconfdefault 为 turnserverconf
vim 编辑配置文件,shift+g 跳到最后一行加上以下内容
在防火墙开启 3478 端口
查看是否开启
在腾讯云(阿里云)控制台把 tcp 和 udp 端口 49152-65535 放开(或者全部开放 1-65535 端口,或者只开放 3478 端口,默认 3478)
查看是否在运行
关闭服务
https://webrtcgithubio/samples/src/content/peerconnection/trickle-ice/
输入 turn:你的域名:3478、账号、密码
addserver 后点下面的按钮
看到 relay 和你的公网 ip 表示 turn 服务连接成功
https://wwwcnblogscom/NanKe-Studying/p/16010426html
https://blogcsdnnet/qq_44938451/article/details/122158975
Stun Server是开源的coTurn穿透服务器,Signal Server是开源的Apache Active MQ。
Signal Server用的是开源的Apache ActiveMQ,网上有很多花里胡哨的方法,这个是简单能搭建成功的过程, 搭建过程 。
穿透服务器用的是开源的coturn, 搭建过程
SDP交换
根据MQTT协议订阅发布机制:
订阅同一个主题:(实现接收消息)
发布同一个主题:(实现发布消息)
对于每一个客户端来说唯一标示是ClientId,客户端发布消息时设置的主题也是ClientId
1、客户端连接到ActiveMQ服务器
这里的ClientId,就是在ActiveMQ服务端添加的
这里主要是连接到ActiveMQ的流程
首先,呼叫方initCall,主要作用是创建PeerConnection对象,设备,将音视频数据封装成MediaStream添加到然后打开本地音视频PeerConnection中,显示呼叫页面。
然后呼叫方startCall,主要作用是CreateOffer,SendOffer,所以要发布Topic:呼叫方Message;
假如ClientA呼叫ClientB,首先ClientA订阅主题ClientB,然后ClientB订阅主题ClientA。
Client A给Client B发送消息时,发布主题Client_A_ID和Message。
Client B给Client A发送消息时,发布主题Client_B_ID和Message。
zjf001连接到服务器
根据前面文章,看一下基本流程
修改服务器安全策略
入方向 UDP 49152/65535
入方向 TCP +UDP 3478/3478
出方向 TCP +UDP 3478/3478
service coturn start
在线验证是否成功
https://webrtcgithubio/samples/src/content/peerconnection/trickle-ice/
0条评论