WebRTC 服务器搭建篇

news2024/12/25 1:16:40

First off All

服务器环境:采用的阿里云国内服务器,系统: Ubuntu 16.04 64位 。

各个服务所需要的编译环境图:

各个服务器对应所需编译平台

1.第一步,先更新下命令行工具,工欲善其身必先利其器,不更新回头出现莫名的错误me 不管。

apt-get update

2.第二步:我们先从房间服务器搭建开始入手,看上面的图,就知道,这个家伙是要用时node.js编译的,那必须安装各种node.js编译相关的插件

按如下步骤:

先安装两个工具库

sudo apt-get install git unzip golang

sudo apt-get install automake autoconf libtool

备注:不要用这种方法安装(apt-get nodejs 如果这么装会报各种版本不兼容)

使用这种方式下载官网 如:

wget https://nodejs.org/dist/v4.7.0/node-v4.7.0-linux-x64.tar.gz

并解压下

tar -xzf node-v4.7.0-linux-x64.tar.gz

要安装node js linux的环境就是方便 只需要配置下环境变量即可,方式如下

vim /etc/profile

里面加入

export PATH=/usr/webrtc/node-v4.7.0-linux-x64/bin:$PATH(备注这个地址是我自己的解压的地址,找到自己的node加压的bin目录设置进环境变量即可)

配置还环境变量以后,需要生效下,执行如下命令

source /etc/profile

下面我们可以测试下node js 环境是否正常了 命令行输入node 进入了就说明node js 安装成功了

下面还需要安装下npn(编译工具)(不用sudo安装npm)

npm -g install grunt-cli

安装python

sudo apt-get install python-webtest

安装jdk,备注:这个是google的jdk

apt-get install default-jdk(google的jdk)

下面就下载rtc的源码 使用clone的方式

进入根目录

git clone https://github.com/webrtc/apprtc.git

这样就有一个apprtc的文件夹了

下面进入文件夹

cd apprtc

如果国外的需要设置下镜像(国内自然不用,如果速度慢就设置下淘宝镜像)

npm config set registry https://registry.npm.taobao.org (设置的淘宝镜像)

npm info underscore (生效设置)

下面使用

npm install //如果这个命令执行有错误 需要删除 sudo rm node_modules -r 再重试(编译房间服务器)

下面进行编译

grunt build //执行结果最后显示 Done, without errors. 就没问题 还是先改src再去build,或者直接修改out里面的配置,都是可以的一个直接改一个是改src

去掉警告,顺利通过:grunt build --force

(Aborted due to warnings. 代表编译成功了)

编译成功后就会有一个新的文件夹out

下面要修改房间服务器的地址

cd out/app_engine

下面需要修改三个文件

1.vim constants.py

指明ice服务器turn 注意不支持https ice服务器一般都是turn开头

修改 43 47行 改成本服务器ip地址 端口是3478 和ceod_key成water(这里我把账号密码,设置成water了,账号密码自己定义,上面的修改成自己的ice服务器端口,后面会设置成3478)

下面需要修改信令服务器的地址 wws开头

61 和 65 行修改成 本服务器ip端口是 8089:比如

这个文件就ok了

2.修改下一个文件

vim apprtc.py

修改 143 144行

去除if else暂使用http的上面两个地址

3.修改 vim index_template.html

找到loadingParams的地方如下图

添加如下代码到上面,修改下账号和密码 和下面的ice服务器 备注端口要和前面的一样

var servers = [{

credential: "water",

username: "water",

urls: [

"turn:112.74.96.116:3478?transport=udp",

"turn:112.74.96.116:3478?transport=tcp"

]

}];

并注释掉下面的

peerConnectionConfig:{{pc_config|safe}},

并添加

peerConnectionConfig: {"iceServers": servers, "rtcpMuxPolicy": "require", "bundlePolicy": "max-bundle"},

可以看到下

比如 (备注端口要和前面的Ice服务器一样)

那怎么开启这个服务器,由于是google开发的需要google引擎

下载

下载https://cloud.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python

(需要翻墙)

我自己上传的可以

到链接:百度网盘 请输入提取码 密码:rvwj

可以下载到如下的

google_appengine压缩包,服务器上面有 解压命令 :

unzip google_appengine_1.9.38.zip

运行房间服务器命令,ip是你服务器ip:

./google_appengine/dev_appserver.py --host 0.0.0.0 ./apprtc/out/app_engine

./google_appengine/dev_appserver.py --host 47.94.106.28 ./apprtc/out/app_engine

出现的错误:google.appengine.tools.devappserver2.wsgi_server.BindError: Unable to bind 47.94.106.28:8080

这样就成功开启了第一个房间服务器。。。。。。是不是感觉不容易。。。

二、下面去配置开启信令服务器 使用go进行编译

其实他的代码已经在房间服务里面了,我们把代码cp出来单独放

将信令服务器的代码copy一份至根目录

cp apprtc/src/collider/ . -r

然后进入信令服务器的文件夹

cd collider/

我们把里面的代码全部放在一个src目录下面,命令行方式如下

创建src目录

mkdir src

将需要编译的代码拷贝到src目录

mv co* src

所以需要安装go 进入根目录

下面安装go 语言

下载go的安装包

wget https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz

tar -xzf go1.5.1.linux-amd64.tar.gz

如图

然后cd 到go/bin 目录下面

下面需要安装go

一样的配置环境变量

添加环境变量

vim /etc/profile

加入

export GOROOT=/usr/webrtc/go=

export PATH=$GOROOT/bin:/root/node-v4.7.0-linux-x64/bin:$PATH

并生效他

source /etc/profile

下面需要修改下信令服务器的配置main.go

修改下自己的房间服务器的地址

修改成自己的服务器ip地址 然后端口是8080

编译先设置下零时go的编译地址如:

export GOPATH=/usr/webrtc/collider/

使用go get collidermain进行编译,这时候如果国内服务器直接执行会报错

我们需要手动下载下一个插件参考地址:go get golang.org/x 包失败解决方法_残剑孤影的博客-CSDN博客

下载代码

mkdir -p $GOPATH/src/golang.org/x

cd $GOPATH/src/golang.org/x

git clone https://github.com/golang/net.git

再去执行

go get collidermain

会生成bin文件夹和 pkg 文件夹 就成功编译好了

开启信令服务器的方式如下

cd collider/bin

运行命令:

./collidermain -port=8089 -tls=false

成功开启信令服务器

三.搭建ice打洞服务器安装打洞服务器 到根目录 使用makefile 进行编译

git clone https://github.com/coturn/coturn.git

需要下载一些插件安装coturn

下面coturn安装 安装前面的版本就好不需要括号里面的

$ sudo apt-get install libssl-dev

$ sudo apt-get install libsqlite3 (or sqlite3)

$ sudo apt-get install libsqlite3-dev (or sqlite3-dev)

$ sudo apt-get install libevent-dev

$ sudo apt-get install libpq-dev

下面就行编译

cd coturn

./configure

sudo make install

开启打动服务器的方式

cd /usr/local/bin

运行:

172.17.231.82

./turnserver --syslog -a -L 172.17.231.82 -X 172.17.231.82 -E 172.17.231.82 -f --min-port=32355 --max-port=65535 --user=water:water -r water --cert=turn_server_cert.pem --pkey=turn_server_pkey.pem --log-file=stdout -v

备注:这里我遇到一个坑,就是我用公网的ip启动都提示无法绑定对应的ip,只有用0.0.0.0 启动不报错,所以局域网的时候可以打通,外网的时候coturn打洞都不成功。

启动可以吧这些参数写配置文件中,方便。

最后三个服务器都差不多搭建成功,如果在一个服务器上,可以写个脚本直接启动三个服务器:

我自己写了个作为参考:

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

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

相关文章

推荐一款图表功能强大的可视化报表工具

企业信息化建设,大量的数据需要经过分析才能挖掘价值。因此数据的价值越来越受到大家的重视,大数据分析工具逐渐成为企业运营必不可少的辅助工具。俗话说工人要想做好事,首先要磨利工具,拥有一个好用的大数据分析工具尤为重要&…

numpy生成0和1数组方法、从已有数组生成新数组方法、生成固定范围内数组、生成随机数组、绘制指定均值和标准差正态分布图、均匀分布图绘制

一、生成0和1数组 np.ones(shape, dtype):shape为要生成的数组的维度,dtype为数组内元素类型np.ones_like(a, dtype):生成与a同维度的数组np.zeros(shape, dtype)np.zeros_like(a, dtype) 代码如下 one np.ones([3,4]) one --------------…

机器学习——支持向量机与集成学习

支持向量机与集成学习 文章目录支持向量机与集成学习支持向量机的基本原理线性可分支持向量常用核函数集成学习概述集成学习的两种方式集成学习的基本类型弱学习其合成方式AdaBoost算法训练过程简例一类按监督学习方式对数据进行二元分类的广义线性分类器 文章目录支持向量机与…

免费不限时长的语音转文字软件——Word365

适用场景 想将语音转化成文字。 这里的语音可以是实时输入,也可以是已有音、视频转换成文字。 后者的操作比前者多一步操作。 1.实时语音转文字 可以直接打开Word365,【开始】选项卡中的【听写】功能。 打开前修改一下设置,语言可以根据需…

nmap之nse脚本简单学习

nmap之nse脚本简单学习 环境:centos8 nmap安装 yum -y install nmap -- 版本 [rootqingchen /]# nmap -version Nmap version 7.70 ( https://nmap.org )脚本入门学习 cd /usr/share/nmap [rootqingchen nmap]# ls nmap.dtd nmap-mac-prefixes nmap-os-db …

300dpi等于多少分辨率?如何给图片修改分辨率大小?

​图片是我们在生活中经常需要接触使用到的东西,无论是工作中还是生活中都离不开图片,在使用图片时我们会接触到“图片分辨率”、“dpi”这个概念,那么到底什么是图片分辨率?300DPI等于多少分辨率?如何给图片修改分辨率…

Lidar和IMU(INS)外参标定----常用开源项目总结

写在前面:博主主要关注的是自动驾驶中Lidar和RTK组合导航设备的标定,大部分的开源项目都把其转化为Lidar和IMU的标定过程。 1. ETH的lidar_align (Github)A simple method for finding the extrinsic calibration between a 3D lidar and a 6-dof pose …

推特精准客户开发手册

你要在巷子里营造出热闹的气氛,人为把热度炒起来,虚假的繁荣是做给别人看的,是用来吸引别人而不是说你自己沉迷于此,而“虚假的繁荣”又是个怎么的虚法呢?它需要外界看起来是真的。 可是问题来了,我们都知…

NTP时钟系统为制造业信息化产业提供守时保障

随着科学技术的发展,工业信息化高速迈进,高精度的同步时钟系统显得尤为重要。利用网络同步时钟系统技术对各个设备之间进行时间统一,对制造业和信息化产业提高产能,让生产力更高效提供守时保障。NTP时钟系统是基于网络时间协议而衍…

你问我答 | 解决关于入托的8个疑问

很多新手家长对于送孩子入托有很多顾虑,这次我们通过“你问我答”让家长更了解托班的意义。 Q:不好好吃饭的小宝宝,适合入托吗? A:适合。吃饭是孩子生活能力培养的重要部分,大部分孩子在入托前&#xff0c…

C. Binary String(思维+贪心)

Problem - 1680C - Codeforces 给你一个由字符0和/或1组成的字符串s。 你必须从字符串的开头去除几个(可能是零)字符,然后从字符串的结尾去除几个(可能是零)字符。移除后,字符串可能会变成空的。删除的代价…

【跟学C++】C++STL标准模板库——算法详细整理(中)(Study18)

文章目录1、简介2、STL算法分类及常用函数2.1、变序算法(一)2.2.1 初始化算法(2个)2.2.2 修改算法(2个)2.2.3 复制算法(6个)2.2.4 删除算法(6个)3、总结 【说明】 大家好,本专栏主要是跟学C内容,自己学习了这位博主【 AI菌】的【C21天养成计划】&#x…

大学生静态HTML网页设计--公司官网首页

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 公司官网网站 | 企业官网 | 酒店官网 | 等网站的设计与制 HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS&#xf…

容器服务 ACK 结合 MSE Ingress,让集群入口流量管理更丰富、更容易

作者:扬少 随着云原生技术不断普及,越来越多的业务应用开始向云原生架构转变,借助容器管理平台 Kubernetes 的不可变基础设施、弹性扩缩容和高扩展性,助力业务迅速完成数字化转型。其中,集群入口流量管理方式在云原生…

斐波那契数列、跳台阶、矩形覆盖、而进制中1的个数、判断是否是素数

文章目录1、斐波那契数列2、跳台阶3、矩形覆盖4、二进制中1的个数5、判断是否是素数1、斐波那契数列 本题考点: 间复杂度,fib理解,剪枝重复计算 牛客链接 题目描述: 解题思路: 代码: class Solution {…

ozon、Joom等俄罗斯跨境电商卖家想要爆单需要具备哪些条件—自养号测评

Ozon成立于1998年,目前不仅是俄罗斯多品类电子商务平台领导者、俄罗斯最知名的电子商务品牌,是俄罗斯最早的电子商务公司之一 Joom平台是俄罗斯知名的电商平台,Joom平台成立于2016年6月份,joom平台在16年11月份就对中国地区卖家进…

项目上线整体流程

文章目录一、上线前准备二、阿里云机器购买三、上线架构图四、安装Git五、云服务器安装MySQL六、云服务器安装Redis七、云服务器安装源码安装Python八、云服务器安装Uwsgi九、安装虚拟环境十、安装nginx十一、前端项目部署十二、后端项目部署1)Git拉取最新代码安装依…

Docker——容器命令介绍、创建Nginx容器与Redis容器

目录 一、容器命令 二、创建并运行Nginx容器 1.1 去dockerhub查看Nginx容器运行命令 1.2 怎么访问Nginx? 1.3 查看容器日志 1.4总结 三、进入Nginx容器并修改HTML内容 3.1 进入容器 3.2 进入Nginx的HTML所在目录 3.3 修改index.html文件(容器内修…

零基础上手unity VR开发【将项目安装到Oculus头套中】

📌个人主页:个人主页 ​🧀 推荐专栏:Unity VR 开发成神之路 --【着重解决VR项目开发难,国内资料匮乏的问题。从零入门,一步一个脚印,带你搞定VR开发! 😻😻】 &#x1f4d…

leetcode39. 组合总和

文章目录题目思考代码和注释总结题目 给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。 candidates 中的 同…