概述

owt是一套完整的webrtc视频会议系统。包含的功能模块有:

  1. 视频会议1. p2p 服务器是owt-server通过nodejs编写的webrtc信令。依赖是licode。licode依赖webrtc。
    客户端系列web/windows/linux/ios/android都有相应的sdk。

owt-server的Docker版使用

参考链接:https://gitee.com/winlinvip/owt-docker
下载镜像

sudo docker run -it -p 3004:3004 -p 3300:3300 -p 8080:8080 -p 60000-60050:60000-60050/udp \
    registry.cn-hangzhou.aliyuncs.com/ossrs/owt:config bash

设置OWT的IP信息,设置为Mac的IP地址。也可以自动获取和设置IP

# vi dist/webrtc_agent/agent.toml
[webrtc]
network_interfaces = [{name="eth0",replaced_ip_address="192.168.1.4"}]  # default: []

# vi dist/portal/portal.toml
[portal]
ip_address = "192.168.1.4" #default: ""

输入命令,初始化OWT和启动服务。

(cd dist && ./bin/init-all.sh && ./bin/start-all.sh)

需要有摄像头,访问页面:https://ip:3004,,这样就可以看到画面了。

OWT Server 源码编译、部署

  1. Ubuntu 18.041. CentOS 7.6

安装 nodejs 环境

apt-get install nodejs  npm -y

下载源码

apt-get update 
&& apt-get install -y git htop unzip  make wget unzip\
&&  git config --global user.name z \
&&  git config --global user.email 2@gmail.com \
&& git clone -b 4.2.x https://github.com/open-webrtc-toolkit/owt-server.git

安装依赖

注意安装依赖环境的脚本有两个,运行任意一个都可以,但是为了安装简便性,建议运行非交互式安装脚本。

交互式安装,scripts/installDeps.sh,在安装每个依赖包前需要操作者手动确认yes/no,比较繁琐
非交互式安装,./scripts/installDepsUnattended.sh,自动安装所有依赖的软件包,不需要手动确认,方便快捷,推荐使用。

cd owt-server-4.3
./scripts/installDepsUnattended.sh
 && \
 npm install  -g node-gyp graceful-fs grunt-cli

编译OWT-Server

./scripts/build.js -t mcu --check

OWT-Server在GitHub README 上描述的是 -t all,但是对于不支持硬件加速的云主机或者虚拟机来说这样 build 会失败,所以如果不支持硬件加速或者不需要硬件加速的话,请使用-t mcu

编译 owt-client-javascript

git clone -b 4.3x https://github.com/open-webrtc-toolkit/owt-client-javascript.git 
cd owt-client-javascript/scripts/
npm install
grunt

解决 npm install报错问题:

npm i --unsafe-perm
然后重新执行`npm install``grunt`

打包 owt-server

npm config set unsafe-perm false
npm --unsafe-perm=true --user=0 i
cd ~/owt-server-4.3/
./scripts/pack.js -f -s ~/owt-client-javascript-4.3/dist/samples/conference/

说明:
pack 成功后,会生成dist目录,dist目录里就是我们运行需要的所有文件。如果你修改了源码,需要重新执行pack。

配置 owt-server

如果你的机器有多块网卡,或者对外提供服务的IP不是你本地网卡的IP,而是公网IP,你需要做如下配置。

配置公网IP或域名,参考Use Internet Name

# vi dist/webrtc_agent/agent.toml
[webrtc]
network_interfaces = [{name="eth0",replaced_ip_address="182.28.12.12"}]  # default: []

# vi dist/portal/portal.toml
[portal]
ip_address = "182.28.12.12" #default: ""

运行 owt-server

cd ~/owt-server/dist
./bin/init-all.sh --deps
./bin/start-all.sh

验证结果

如果以上流程都顺利,接下来你就可以访问服务器的demo体验mcu功能了。

测试mcu功能

访问页面:https://ip:3004

测试sfu功能

访问页面:https://ip:3004/?forward=true

打开OWT的默认演示页面,私有证书需要选择Advanced => Proceed to 192.168.1.4 (unsafe)

问题处理

ffmpeg这些依赖在根目录build/libdeps目录下。
webrtc源码目录在third_party目录下。
node:请从头到尾使用 v8.15版本的node

nvm install v8.15 
nvm use v8.15 

构建无法下载chromium.googlesource.com中的代码webrtc代码的下载使用代理

需要修改wget代理, 编辑 ~/.wgetrc 文件, 设置如下内容:

1.  `https_proxy = http://127.0.0.1:8123/`
2.  `http_proxy = http://127.0.0.1:8123/`
3.  `#ftp_proxy = http://proxy.yoyodyne.com:18023/`

5.  `# If you do not want to use proxy at all, set this to off.`
6.  `use_proxy = on`

licode的修改

licode 需要用到patch文件 可能会出现removeRemoteCandidate成员变量不存在
需要打补丁,是因为脚本installCommonDeps.sh执行不成功导致的:

291 行  git am $PATHNAME/patches/licode/*.patch

手动执行:

git am ./source/patches/licode/*.patch

source/agent/webrtc/webrtcLib/ 目录下的文件是licode的文件的软链接。需要直接在linux系统上git clone下来使用。而不能从,windows上git clone 然后再上传到linux机器上。

owt-server的打包问题

owt-server的pack的细节,可能会有错误需要执行指令:

npm --unsafe-perm=true --user=0 i

错误Could not run pkg-config

apt-get install -y pkg-config
apt-get install libglib2.0-dev

--完--