栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

webrtc+turn+peerconnection

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

webrtc+turn+peerconnection

一、环境说明:
在centos7上运行turn+peerconnection_server
一台网关下的局域网ubuntu20运行peerconnection_client
一台wifi ubuntu20运行peerconnection_client
资源:编译好的peerconnection_client和peerconnection_server已上传csdn免费下载,文末附链接。
期待:要么打动成功,要么中继,两端都应该能看到视频

二、在centos7上配置turn:

安装相关依赖:

yum install -y make gcc cc gcc-c++ wget openssl-devel libevent libevent-devel

下载源码编译:

wget https://coturn.net/turnserver/v4.5.0.8/turnserver-4.5.0.8.tar.gz
tar -zxvf turnserver-4.5.0.8.tar.gz
cd turnserver-4.5.0.8/
./configure --prefix=/usr/local/turnserver  # 指定安装的目录
make && make install

配置环境变量

vim ~/.bashrc
export turnserver_home=/usr/local/turnserver
export PATH=$PATH:$turnserver_home/bin

配置turn服务器

find /usr -name turnserver.conf
vim /usr/local/turnserver/share/examples/turnserver/etc/turnserver.conf

配置如下,这里可配的选项很多,这里我测试用简单配置,笔者的是阿里云服务器,需要先打开端口的tcp和udp访问权限和关闭防火墙。

listening-port=8889
external-ip=139.129.91.106
user=deviser:hotdog
realm=stun.deviseryqw.cn

运行:

turnserver -v -r 139.129.91.106 -a -o -c /usr/local/turnserver/share/examples/turnserver/etc/turnserver.conf

查看是否配置成功:
https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/
填好URL用户名密码,点击Add Server。
点击Gather candidates,最后一行有“Done”出现,则说明中继服务器配置成功。
![请添加图片描述](https://img-blog.csdnimg.cn/bd9b3d6b3e3d405e9dbbe4e8e050841f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA44CB44CB44CB44CB5Y2X5bGx5bCP6Zuo44CB44CB44CB44CB,size_20,color_FFFFFF,t_70,g_se,x_16

三、修改peerconnection_client,注意turnserver服务器包含了stun服务器,会先尝试打洞,不成功后就作中转服务器。

src/examples/peerconnection/client/conductor.cc

bool Conductor::CreatePeerConnection() {
  RTC_DCHECK(peer_connection_factory_);
  RTC_DCHECK(!peer_connection_);

  webrtc::PeerConnectionInterface::RTCConfiguration config;
  config.sdp_semantics = webrtc::SdpSemantics::kUnifiedPlan;
  //屏蔽部分
  // webrtc::PeerConnectionInterface::IceServer server;
  // server.uri = GetPeerConnectionString();
  // config.servers.push_back(server);
  //屏蔽部分

//新增部分
    webrtc::PeerConnectionInterface::IceServer turnServer;  
    turnServer.uri = "turn:139.129.91.106:8889";
    turnServer.username = "deviser";
    turnServer.password = "hotdog";
    config.servers.push_back(turnServer);
//新增部分

  peer_connection_ = peer_connection_factory_->CreatePeerConnection(
      config, nullptr, nullptr, this);
  return peer_connection_ != nullptr;
}

void Conductor::DeletePeerConnection() {
  main_wnd_->StopLocalRenderer();
  main_wnd_->StopRemoteRenderer();
  peer_connection_ = nullptr;
  peer_connection_factory_ = nullptr;
  peer_id_ = -1;
  loopback_ = false;
}

四、运行
上面配置时已经使用如下命令运行了turnserver

turnserver -v -r 139.129.91.106 -a -o -c /usr/local/turnserver/share/examples/turnserver/etc/turnserver.conf

在阿里云centos7上,再运行peerconnection_server(笔者这个在ubuntu18上编译的能成功运行,在ubuntu20上编译的不能直接运行)

在网关后的局域网(私网)ubuntu20运行peerconnection_client
在wifi的ubuntu20运行peerconnection_client
运行这两个时,ip填阿里云ip,端口填8888,这里是配置信令服务器参数。

五、结果,两端视频,实测延时220ms,这里是没打通,如果打通延时会更低。


peerconnection_client和peerconnection_server连接:peerconnection
配置coturn参考:coturn

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827124.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号