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

【网络通信 -- 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 ]; thencd $LIB_DIRwget -c https://boostorg.jfrog.io/artifactory/main/release/1.65.0/source/boost_1_65_0.tar.bz2tar xvf boost_1_65_0.tar.bz2cd boost_1_65_0chmod +x bootstrap.sh./bootstrap.sh./b2 && ./b2 install --prefix=$PREFIX_DIRelsemkdir -p $LIB_DIRinstall_boostfi
}修改 installDepUnattended.sh 如下
if [[ "$OS" =~ .*centos.* ]]
then. installCentOSDeps.shif [ "$NIGHTLY" != "true" ]; theninstallRepoinstallYumDepsinstall_boostfi
elif [[ "$OS" =~ .*ubuntu.* ]]
then. installUbuntuDeps.shif [ "$NIGHTLY" != "true" ]; theninstall_apt_depsinstall_boostfi
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
将获取到的目录名改为 src2. 在 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.mzph.cn/news/71566.shtml

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

相关文章

Linux 进程管理指南

目录 1、查看进程 2、启动进程 3、后台运行进程 4. 暂停和恢复进程 5. 终止进程 6. 查找进程信息 Linux 进程是操作系统中运行的程序的实例。每个进程都有自己的内存空间和执行环境,它们彼此隔离,以确保安全性和稳定性。在 Linux 中管理进程是非常…

Android发布依赖到 Jitpack

前言 我们在日常开发中,经常会用到第三方开源的库文件,有的来自JCenter,Maven Central,google等。但是随着JCenter的弃用,现在用的最多的还是Maven Central,google。今天我们就自己亲自发布一个依赖。 现…

企业架构LNMP学习笔记20

Nginx Location匹配规则: URI:统一资源标识符。 URN:统一资源名称。 URL:统一资源定位符。URL是更细化一点。 1)精确匹配: location / {#规则 } 则匹配到 Example Domain 这种请求。 2)~ 大…

ubuntu上ffmpeg使用framebuffer显示video

这个主题是想验证使用fbdev(Linux framebuffer device),将video直接显示到Linux framebuffer上,在FFmpeg中对应的FFOutputFormat 就是ff_fbdev_muxer。 const FFOutputFormat ff_fbdev_muxer {.p.name "fbdev",.p.long_…

Visual Studio(2022)生成链接过程的.map映射文件以及.map映射文件的内容说明

微软的官方说明 /MAP(生成映射文件) | Microsoft Learn 设置步骤 1. 右键项目属性, 连接器 -> 常规 -> 启用增量链接,设置为否。如下图: 2. 连接器 -> 调试 生成调试信息 设置为 生成调试信息 (/DEBUG) 生成程序数据库…

go work 不同包下mod + work实现.go文件的互相调用

一、文件架构 . ├── go.mod ├── go.work ├── main │ └── main.go └── util├── go.mod└── util.go其中go.mod module testgo 1.21.0其中go.work go 1.21.0use (../util )main/main.go 1 package main …

windows自带远程桌面连接的正确使用姿势

摘要 目前远程办公场景日趋广泛,对远程控制的需求也更加多样化,windows系统自带了远程桌面控制,在局域网内可以实现流程的远程桌面访问及控制。互联网使用远程桌面则通常需要使用arp等内网穿透软件,市场上teamviewer、Todesk、向…

229. 多数元素 II Python

文章目录 一、题目描述示例 1示例 2示例 3 二、代码三、解题思路 一、题目描述 给定一个大小为 n 的整数数组,找出其中所有出现超过 ⌊ n/3 ⌋ 次的元素。 示例 1 输入:nums [3,2,3] 输出:[3]示例 2 输入:nums [1] 输出&…

springMAC的原理以及概述

Spring是一款基于Java语言的轻量级开源应用框架,用于构建企业级应用程序。Spring框架拥有众多的功能模块,能够为开发者提供全面的解决方案,包括IoC容器、AOP、数据访问、Web开发、事务管理等。而MAC(Model-View-Controller、Agile…

基于docker环境的tomcat开启远程调试

背景: Tomcat部署在docker环境中,使用rancher来进行管理,需要对其进行远程调试。 操作步骤: 1.将容器中的catalina.sh映射出来,便于对其修改,添加远程调试相关参数。 注意:/data/produce2201…

C++——智能指针

智能指针 文章目录 智能指针内存泄漏智能指针解决内存泄漏问题智能指针的使用及原理RAII智能指针对象的拷贝问题 C中的智能指针auto_ptrunique_ptrshared_ptrweak_ptr定制包装器C11和boost中智能指针的关系 内存泄漏 什么是内存泄漏:内存泄漏指因为疏忽或错误造成程…

NSSCTF2nd与羊城杯部分记录

文章目录 前言[NSSCTF 2nd]php签到[NSSCTF 2nd]MyBox[NSSCTF 2nd]MyHurricane[NSSCTF 2nd]MyJs[NSSCTF 2nd]MyAPK羊城杯[2023] D0nt pl4y g4m3!!!羊城杯[2023]ezyaml羊城杯[2023]Serpent羊城杯[2023]EZ_web羊城杯[2023]Ez_misc总结 前言 今天周日,有点无聊没事干&a…

Elasticsearch全文搜索引擎

Elasticsearch全文搜索引擎 Elasticsearch简介windows平台下安装ES学习ES的预备知识ES索引操作ES文档操作ES高级查询Golang操作ES起步Golang操作ES索引Golang操作ES文档Golang ES高级查询Gin集成ES

如何配置docker或者k8s拉取https私人镜像仓库

如何配置docker或者k8s拉取https私人镜像仓库 局域网部署私人镜像仓库harbor,然后也按照流程正常生成了自签证书但是在同一网段的其他服务器上docker或者k8s都无法拉取镜像,网上查了很多资料,要么不是使用的https,要么就是有域名…

Vue框架学习记录之环境安装与第一个Vue项目

Node.js的安装与配置 首先是Node.js的安装,安装十分简单,只需要去官网下载安装包后,一路next即可。 Node.js是一个开源的、跨平台的 JavaScript 运行时环境 下载地址,有两个版本,一个是推荐的,一个是最新…

winform C#键盘钩子(Hook)拦截器,屏蔽键盘深入解析

钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事…

Python爬虫数据存哪里|数据存储到文件的几种方式

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 爬虫请求解析后的数据,需要保存下来,才能进行下一步的处理,一般保存数据的方式有如下几种: 文件:txt、csv、excel、json等,保存数据量小。 关系型数据库…

Python小知识 - Python装饰器

Python装饰器 在Python中,装饰器是一个特殊的函数,可以将其他函数包装在装饰器函数中,并且将被包装的函数作为参数传递给装饰器函数。 使用装饰器的好处是可以自动在被包装的函数前后执行一些额外的代码,比如在函数执行前后打印日…

嵌入式开发-11 Linux下GDB调试工具

目录 1 GDB简介 2 GDB基本命令 3 GDB调试程序 1 GDB简介 GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。 一般来说,GDB主要帮助你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序&#…

RabbitMQ 常用运维命令

AMQP协议简介 AMQP,即Advanced Message Queuing Protocol,一个提供统一消息服务的应用层标准高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件不同产品&#xff0c…