WebRTC搭建流程(二)房间服务器搭建

r囧r小猫 2022-04-16 04:24 669阅读 0赞

房间服务器搭建

安装依赖软件和环境

(一)阿里云的源是阿里自己的镜像,不需要再修改源,安装必备软件像 git、解压、nodejs、python 、go语言编译等必备的软件

  1. cd ~
  2. sudo apt-get update
  3. apt-get install git unzip lrzsz nodejs npm automake autoconf libtool nodejs-legacy python-webtest golang -y

哪个软件安装失败就重新装

  1. apt-get 软件名称

(二) java环境安装

  1. 下载jdk8 linux 64位版 jdk-8u191-linux-x64.tar.gz 下载地址下载完拿shell工具上传到服务器/usr/lib/jvm路径下,jvm 文件夹没有的话创建后上传。解压jdk压缩文件

    cd /usr/lib/jvm/

    1. tar -zxvf jdk-8u191-linux-x64.tar.gz
  2. 设置环境变量

    cd /etc/

    1. vim profile
  3. 打开文件后,在文件末尾追加

    export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_191

    1. export PATH=$JAVA_HOME/bin:$PATH
    2. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
  4. 修改后按键ESC ->shift+:->wq 保存并退出

  5. 使配置生效

    source /etc/profile

  6. 验证java环境

    java -version

  7. 如果出现如下信息则环境配置成功

    java version “1.8.0_191”
    Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

(三) git下载apprtc项目仓库,并编译

  1. cd ~
  2. git clone https://github.com/webrtc/apprtc.git
  3. cd apprtc/
  4. git checkout v1.0
  • 安装编译工具

    npm -g install grunt-cli

  • 安装项目依赖

    npm install

  1. 这里不会很顺利,出现各种问题
  2. 如果报错:SyntaxError: Use of const in strict mode,需要更新版本:

    npm cache clean -f
    npm install -g n
    n stable
    node -v
    npm install // 再来安装一次

  3. 如果仍有错误还可以切换grunt-cli的源再重来一次

    rm node_modules/ -rf //删掉
    npm config set registry https://registry.npm.taobao.org //切换淘宝源
    npm info underscore //使其生效
    npm install // 再来安装一次

  4. 还有问题谷歌、百度、Stack Overflow 查询

    • 依赖搞定之后,编译apprtc项目

    grunt build

  5. 这里也会出现一些问题,缺少一些依赖,到相应缺少module目录下

    npm install

  6. 再没有可能需要翻墙自己下载,我没有遇到。
    如果出现

    requests.exceptions.SSLError

  7. 这个是证书,不需要,我们nginx来转发就好了,使用如下方式编译

    grunt build -force

  8. 如果出现

    Done.with warrings 或者 Done.with out error

表示成功

(四)修改编译后的项目配置,源文件没有动

  • 修改 constants.py

    cd out/app_engine/
    vim constants.py

  1. 修改的部分

    TURN_BASE_URL = ‘https://www.域名‘
    ICE_SERVER_BASE_URL = ‘https://www.域名
    WSS_INSTANCE_HOST_KEY = ‘www.域名:8089’
    WSS_INSTANCES = [{

    1. WSS_INSTANCE_HOST_KEY: 'www.域名:8089',
    2. WSS_INSTANCE_NAME_KEY: 'wsserver-std',
    3. WSS_INSTANCE_ZONE_KEY: 'us-central1-a'

    }, {

    1. WSS_INSTANCE_HOST_KEY: 'www.域名:8089',
    2. WSS_INSTANCE_NAME_KEY: 'wsserver-std-2',
    3. WSS_INSTANCE_ZONE_KEY: 'us-central1-f'

    }]

    • 修改 index_template.html在
  2. var loadingParams = { 这一行上面添加javaScript代码

    var servers=[{
    credential:”helloword”,
    username:”helloword”,
    urls:[“turn:服务器外网ip:3478?transport=udp”,
    “turn:服务器外网ip:3478?transport=tcp”,
    “turn:服务器外网ip:3479?transport=udp”,
    “turn:服务器外网ip:3479?transport=tcp”
    ]
    }];

    • 修改debug.js

    cd ~/apprtc/out/app_engine/js
    vi apprtc.debug.js

做出如下修改

  1. if (!isChromeApp()) {
  2. roomLink=roomLink.substring("http","https"); //新增加的
  3. window.history.pushState({"roomId":roomId, "roomLink":roomLink}, roomId, roomLink);
  4. }
  1. 注释掉

    //peerConnectionConfig: {
    { pc_config | safe }},
    //turnRequestUrl: ‘{
    { turn_url }}’,
    //iceServerRequestUrl: ‘{
    { ice_server_url }}’,

3.添加

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

(五)安装google_appengine 谷歌Python服务器容器,apprtc跑在上面

  • 下载地址 选择Standard environment下的python,下载到本地后后上传到服务器 ~ 目录
  • 解压

    cd ~
    unzip google_appengine_1.9.80.zip

  • 配置环境变量

    vi /etc/profile

  1. 添加变量

    export PATH=$PATH:/root/google_appengine/

  2. 使其生效

    source /etc/profile

    • 创建日志文件

    mkdir logs
    cd logs
    touch room.log collider.log turn.log //创建文件
    chmod 777 room.log collider.log turn.log //修改权限

(六)启动房间服务器,观察日志

  1. 观察日志

    tail -f ./logs/room.log

  2. 新建立连接启动服务器

    cd ~
    nohup ./google_appengine/dev_appserver.py —host 内网ip —enable_host_checking false ./apprtc/out/app_engine > ./logs/room.log 2>&1 &

(七)结果验证

打开https://域名/
能正常访问,则成功

如果报错找不到 callstats.min.js 下载地址
socket.io.js 下载地址
下载后上传到

  1. /root/apprtc/out/app_engine/third_party/callstats

重新打开网页就好

网页如图

发表评论

表情:
评论列表 (有 0 条评论,669人围观)

还没有评论,来说两句吧...

相关阅读

    相关 用SRSWebRTC流媒体服务器

    WebRTC经过这么多年的发展,目前已经比较成熟的协议之一,播放也比较稳定,协议也已经成为了RFC,相应的开源项目也越来越多,但是基于WebRTC协议的部署简单,性能强悍,功能

    相关 WebRtc环境

    0.前言 这次的需求,准备做的是一个类似与QQ视频一样的点对点视频聊天。这几天了解了一些知识后,决定使用HTML5新支持的WebRtc来作为视频通讯。客户端使用