【网络通信 -- WebRTC】Open WebRTC Toolkit 环境搭建指南

news2024/10/1 19:23:07

【网络通信 -- WebRTC】Open WebRTC Toolkit -- OWT-Server 编译安装指南

【1】OWT Server 与 Web Demo 视频会议环境搭建

【1.1】编译 OWT Server

安装依赖
./scripts/installDepsUnattended.sh

编译
scripts/build.js -t all --check
注意若不支持硬件加速则采用如下命令
scripts/build.js -t mcu --check

【1.2】编译 owt-client-javascript

npm install -g grunt-cli
进入 scripts 目录
npm install
grunt

【1.3】打包 OWT Server

scripts/pack.js -t all --install-module --app-path ${webrtc-javascript-sdk-sample-conference-dist}

【1.4】配置 OWT Server

------------------------- 对于存在公网 IP 的场景 -------------------------

修改 webrtc_agent/agent.toml 文件中如下配置,添加公网IP配置
{name = "eth0", replaced_ip_address = "公网IP"}

修改 portal/portal.toml 文件中如下配置,添加公网IP配置
ip_address = "公网IP"

------------------------- 本地部署测试场景 -------------------------

修改 app 模块的 samplertcservice.js 文件 如下代码段
icsREST.API.init('_service_ID_', '_service_KEY_', 'https://localhost:3000/', false);
替换其中的 _service_ID_、_service_KEY_、HTTP-API 的 Url

_service_ID_、_service_KEY_ 在执行 ./bin/init-all.sh 初始化脚本时会输出如下
superServiceId: {}
superServiceKey: {}
sampleServiceId: {}
sampleServiceKey: {}
使用其中的 sampleServiceId、sampleServiceKey

【1.5】启动 OWT Server 与测试

进入 dist 目录执行如下命令启动 OWT Server
./bin/init-all.sh
初始化时会提示是否更新 mangodb、rabbitmq 的账号信息,注意选择 no

./bin/start-all.sh
注意请单独启动 app 模块,示例中的 app 模块初始化时会查询 HTTP-API 接口,初始化房间
需要确保 HTTP-API 模块启动完毕才能启动 app 模块,否则 app 模块将无法访问 HTTP-API 接口

启动完毕后
访问 https://{服务器 IP}:3300/console/ 可以进入 OWT 控制台,其中可以新增房间并配置房间能力
访问 https://{服务器 IP}:3004 即可进入默认房间进行测试,该模式是 MCU
访问 https://{服务器 IP}:3004?forward=true 即可进入默认房间进行测试,该模式是 SFU

问题与解决方案

【1】depot_tools / fetch:第8行:exec:python:未找到

解决方案
ln -s /usr/bin/python2.7 /usr/bin/python

【2】编译 usrsctp 失败

解决方案
修改 installCommonDeps.sh 脚本如下
./configure --prefix=$PREFIX_DIR enable_warnings_as_errors=set

【3】boost库相关问题

解决方案

sudo apt-get install python-dev

修改 installUbuntuDeps.sh
添加如下函数
install_boost(){
  if [ -d $LIB_DIR ]; then
    cd $LIB_DIR
    wget -c https://boostorg.jfrog.io/artifactory/main/release/1.65.0/source/boost_1_65_0.tar.bz2
    tar xvf boost_1_65_0.tar.bz2
    cd boost_1_65_0
    chmod +x bootstrap.sh
    ./bootstrap.sh
    ./b2 && ./b2 install --prefix=$PREFIX_DIR
  else
    mkdir -p $LIB_DIR
    install_boost
  fi
}

修改 installDepUnattended.sh 如下
if [[ "$OS" =~ .*centos.* ]]
then
  . installCentOSDeps.sh
  if [ "$NIGHTLY" != "true" ]; then
    installRepo
    installYumDeps
    install_boost
  fi
elif [[ "$OS" =~ .*ubuntu.* ]]
then
  . installUbuntuDeps.sh
  if [ "$NIGHTLY" != "true" ]; then
    install_apt_deps
    install_boost
  fi
fi

【2】OWT Client Native 编译生成 SDK -- Android 平台

【2.1】OWT Client Native SDK -- Android 平台编译

1. 获取 owt-client-native 代码
git clone https://github.com/open-webrtc-toolkit/owt-client-native.git
将获取到的目录名改为 src

2. 在 src 同级目录中创建 .gclient 文件,内容如下
solutions = [ 
  {  
     "managed": False,  
     "name": "src",  
     "url": "https://github.com/open-webrtc-toolkit/owt-client-native.git@8cf4e56ff990e5d698b9b13aeb02fb7d3219233a",
     "custom_deps": {},
     "deps_file": "DEPS",  
     "safesync_url": "",  
  },  
]  
target_os = ["android"]  
注意,owt-client-native 在 4.2 以上版本方才支持 android,因此项目 git url 中需指明具体的提交

3. 执行 gclient sync 同步代码

4. 执行 python2 scripts/build_android.py 编译对应的 sdk 库

5. 编译完毕将得到 libwebrtc.jar 以及 arm64-v8a、armeabi-v7a、x86 平台的 libjingle_peerconnection_so.so

【2.2】运行 owt-client-android

获取代码 git clone https://github.com/open-webrtc-toolkit/owt-client-android@9965201e05c1ac0c42d56285b0717ec5c5b69d21

将 android 平台编译得到的 owt-client-native 库拷贝到对应的 dependencies/libwebrtc 目录下
编译 owt-client-android 工程即可获得对应的 APK

参考致谢

本博客为博主的学习实践总结,并参考了众多博主的博文,在此表示感谢,博主若有不足之处,请批评指正。

【1】OWT 安装与初步使用说明

【2】WebRTC Toolkit(OWT)服务器用户指南 

【3】编译和安装OWT-Server 

【4】OWT (Open WebRTC Toolkit) 5.0 初体验与开发环境搭建 

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

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

相关文章

C++的命名空间namespace详解及特殊情况分析

这里写目录标题 历史来源意义定义使用using namespace std弊端 历史来源 最开始的C 头文件仍然以.h为后缀,它们所包含的类、函数、宏等都是全局范围的。后来 C 引入了命名空间,计划重新编写库将类、函数、宏等都统一纳入一个命名空间std 但改版后的c库致使旧c库无法…

springboot 下 activiti 7会签配置与实现

流程图配置 会签实现须在 userTask 节点下的 multi instance 中配置 collection 及 completion condition; collection 会签人员列表;element variable 当前会签变量名称,类似循环中的 item;completion condition: 完成条件。 ${taskExecutionServiceIm…

Credo推出业界首款单片集成CMOS VCSEL驱动器的800G光DSP芯片

针对AOC及短距(SR)光模块优化的新型Credo DSP,适用于下一代超大规模数据中心/AI应用 加州圣何塞和中国深圳,2023年9月6日——Credo Technology(纳斯达克股票代码:CRDO)今日发布两款新品&#x…

EasyPhoto:基于 SD WebUI 的艺术照生成插件来啦!

作者 :wuziheng 背景介绍 最近,基于生成式AI技术批量产出真/像/美的个人写真应用非常受欢迎。同时,随着 Stable Diffusion 领域开源社区的快速发展,社区也涌现了类似 FaceChain 的开源项目,帮助开发者开发个性化的真…

14 合并区间

合并区间 题解1 左端点排序后合并(可证连续,贪心)题解2 双指针(优化) 以数组 i n t e r v a l s intervals intervals 表示若干个区间的集合,其中单个区间为 i n t e r v a l s [ i ] [ s t a r t i , e n…

计算机视觉-OpenCV入门讲解

🎉作者简介:在读计算机研究生,目前研二。主要研究方向是人工智能和群智能算法方向。目前熟悉python网页爬虫、机器学习、计算机视觉(OpenCV)、群智能算法目前正在学习深度学习的相关内容。 📃个人主页&…

jar包或exe程序设置为windows服务

最近在使用java和python制作客户端时突发奇想,是否能够通过一种方法来讲jar包和exe程序打包成windows服务呢?简单了解了一下是可以的。 首先要用到的是winSW,制作windows服务的过程非常简单,仅需几步制作完成,也不需要…

2023 Google 开发者大会

🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…

C++(Liunx) 使用cut截 取出Ubuntu用户的家目录,要求:不能使用“:“作为分割.

使用cut截 取出Ubuntu用户的家目录,要求:不能使用":"作为分割

spawnsync pnpm.cmd enoent

解决: 安装pnpm npm install pnpm -g

深入解析JDK 8 HashMap

HashMap 简介 HashMap 主要用来存放键值对,它基于哈希表的 Map 接口实现,是常用的 Java 集合之一,是非线程安全的。 HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个 JDK1.8…

自从学会了ChatGPT,我就再没加过班

不会吧不会吧,竟然还有程序员没学会ChatGPT?据说早学会ChatGPT的程序员已经开挂了! 不仅实现了按时下班的人生理想,还拥有了升职加薪的意外收获,在开挂人生的另一边却仍有人担心自己会被ChatGPT取代!因为C…

【高阶数据结构】红黑树 {概念及性质;红黑树的结构;红黑树的实现;红黑树插入操作详细解释;红黑树的验证}

红黑树 一、红黑树的概念 红黑树(Red Black Tree) 是一种自平衡二叉查找树,在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有…

A145-FR04HS-60变量柱塞泵控制比例放大器

本比例放大器驱动电比例泵、比例压力阀、比例流量阀、比例减压阀、比例方向阀、比例插装阀、比例溢流阀、比例节流阀、比例换向阀控制。 输入指令、最大、最小电流、上升、下降斜坡时间、颤振频率等可现场设置; 带数码显示,可查看设置参数及故障报警提…

vue-cli中总提示组件没有正确注册

这里写目录标题 一、报错提示二、修改办法 一、报错提示 二、修改办法 <template><div><aside-component style"width: 15%"></aside-component></div> </template><script> import AsideComponent from /components/Asi…

JAVA毕业设计096—基于Java+Springboot+Vue的在线教育系统(源码+数据库+18000字论文)

基于JavaSpringbootVue的在线教育系统(源码数据库18000字论文)096 一、系统介绍 本系统前后端分离 本系统分为管理员、用户两种角色(管理员角色权限可自行分配) 用户功能&#xff1a; 注册、登录、课程预告、在线课程观看、学习资料下载、学习文章预览、个人信息管理、消息…

06-JVM对象内存回收机制深度剖析

上一篇&#xff1a;05-JVM内存分配机制深度剖析 堆中几乎放着所有的对象实例&#xff0c;对堆垃圾回收前的第一步就是要判断哪些对象已经死亡&#xff08;即不能再被任何途径使用的对象&#xff09;。 1.引用计数法 给对象中添加一个引用计数器&#xff0c;每当有一个地方引…

最新暴力破解漏洞技术详解

暴力破解漏洞简介 暴力破解漏洞的产生是由于服务器端没有做限制&#xff0c;导致攻击者可以通过暴力的手段破解所需信息&#xff0c;如用户名、密码、短信验证码等。暴力破解的关键在于字典的大小及字典是否具有针对性&#xff0c;如登录时&#xff0c;需要输入4位数字的短信验…

无涯教程-JavaScript - DEC2BIN函数

描述 DEC2BIN函数将十进制数转换为二进制数。 语法 DEC2BIN (number, [places])争论 Argument描述Required/Optionalnumber 要转换的十进制整数。 如果number为负数,则将忽略有效的位置值,并且DEC2BIN返回10个字符(10位)的二进制数字,其中最高有效位是符号位。其余的9位是幅…

使用多线程或异步技术提高图片抓取效率

导语 图片抓取是爬虫技术中常见的需求&#xff0c;但是图片抓取的效率受到很多因素的影响&#xff0c;比如网速、网站反爬机制、图片数量和大小等。本文将介绍如何使用多线程或异步技术来提高图片抓取的效率&#xff0c;以及如何使用爬虫代理IP来避免被网站封禁。 概述 多线…