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

2023-11-22 15:08

本文主要是介绍OWT (Open WebRTC Toolkit) 5.0 初体验与开发环境搭建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

介绍

OWT是Intel前些年开源的基于互联网的视频会议解决方案,可以支持WebRTC和SIP终端。这几年WebRTC应用的特别广泛,使用OWT可以快速搭建一个WebRTC视频会议系统。OWT最初仅支持MCU模式,也就是服务器混流,客户端仅可订阅一路音视频即可,后来新版本也支持SFU模式。

OWT 项目地址 https://github.com/open-webrtc-toolkit , 包含服务器端 OWT-Server 和 各种客户端程序。

我是做服务器开发的,后续主要分享 OWT-Server 相关的内容,因认知有限,有错误欢迎提出,有问题尽可留言交流。

从代码结构上讲,OWT-Server 底层业务使用 C++ ,对WebRTC库就行封装,ICE协商部分使用的 libnice 库。 上层业务逻辑使用的 Node.js 编写的。作为一个C++ 码农,不得不说用Node.js写业务真是比C++爽太多了~

Demo 体验

对于学习来说,先跑个demo看看现象,才能知道这玩意能不能满足需求。

我用目前最新的OWT-Server 5.0 版本,编译打包后制作了一个docker镜像,里面包含了Web端的Demo,拉下来直接run应该就可以体验了。

先来个最简单的,使用host模式哦~ 省的映射端口了。

docker run -d --name owt-demo --network host lmshao/owt-server

Web 观看地址:https://localhost:3004/ 。注意是https的,因为是默认假的证书,所以浏览器有提醒,确认一下就可以了。正常入会如下图显示,中间大方块是一路mix媒体流,上面小图是本地回显。
OWT-demo
关于这个镜像的使用可以参考 docker hub : lmshao/owt-server。

不使用host网络模式启动容器
3004 是web端口,8080是webrtc信令端口,15672是RabbitMQ web控制台管理端口,3300是会议配置web控制台端口。这种模式启动应该只能在本机web参会,不能在同一局域网其他机器入会。

docker run -d --name owt-demo \-p 3004:3004 \-p 8080:8080 \-p 15672:15672 \-p 3300:3300 \lmshao/owt-server

开发环境搭建

正常流程

之所以强调是正常流程,是因为OWT用到很多第三方库,最重要的是WebRTC库需在在线安装配置,众所周知的原因,境内的服务器是没法正常使用的。可以看下面 “曲线救国” 章节介绍。

如果用的是境外的服务器或者用小飞机之类的代理工具,就可以按照Github owt-server页面README进行配置就好了,主要由下面几个步骤。官方指定系统Ubuntu 18.04 或者CentOS 7.6,我亲自试了Ubuntu20.04默认会报一些错误。

下载OWT-Server

OWT-Server git clone 或者直接下载 Release 包。

安装第三方依赖

这一步非常慢,并且需要连谷歌等外网!

scripts/installDepsUnattended.sh
编译C++代码
scripts/installDepsUnattended.sh
打包发布
scripts/pack.js -t all

如果要把官方web demo打包进去的话,可以使用下面命令

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

--install-module指定是打包的时候安装node.js依赖,${webrtc-javascript-sdk-sample-conference-dist}目录是 owt-client-javascript 打包生成的dist目录。具体 owt-client-javascript 打包方法直接看它的README吧。

曲线救国

上不了外网安装依赖失败的看这里,编译报错八成也是因为安装依赖报错了。
这个方法也适用于把代码 COPY 到别的路径编译不通过。

摸索到一个好方法,就是在境外服务器上下载安装依赖后,把文件夹直接拿过来使用。没有境外服务器可以在 Vultr 上买一个按时间付费的服务器,用完直接删除,也就几毛钱的事。

假设你已经在别的服务器上执行 scripts/installDepsUnattended.sh 安装完了依赖,把代码COPY到了你的服务器。这时候你直接编译已经是会报错的,因为有一些依赖里面使用的是绝对路径,导致还是找不到相应第三方库,即使已经在你的 owt-server 目录里面了。

安装依赖后第三方库的信息在这个build/libdeps/build/lib/pkgconfig目录下面,可以看看里面.pc文件中的库的路径是绝对路径。然后把这些库里面的所有路径都设置为你当前代码所在的路径就应该可以了。

举个栗子,假如你第一次安装依赖的时候owt目录为/root/owt-server-5.0,那你.pc文件里面应该就有/root/owt-server-5.0字样,可以sed命令全替换为当前路径。
比如:

# 可以先备份一下build/libdeps/build/lib/pkgconfig 防止改呲花了
cd owt-server-5.0
sed -i "s;/root/owt-server-5.0;$PWD;g" build/libdeps/build/lib/pkgconfig/*.pc

现在应该就可以正常编译了。如果还是有一些库链接不到,那就 find 它所在的目录,然后直接 export LD_LIBRARY_PATH=/XXXX 或者export PKG_CONFIG_PATH,实在不行最简单粗暴的方法就是在线安装那个库,前提是仓库里有那个库。

后记

OWT server 是模块化的框架,也就是说信令模块,混流模块和会控等模块是分离的,可以分布式集群化部署。其他优点可以去看其他的介绍类文章,或者LiveVideoStack大会PPT。

OWT 作为一个开源的视频框架,完全可以在此基础上增加一些业务逻辑进行商用。近两年的LiveVideoStack大会,好像每次都有人专门讲OWT的应用。

OWT 媒体层使用C++开发,上层业务逻辑使用Node.js开发,写业务逻辑是真的快,接触OWT后我也是新学的Node.js,使用 Node.js 唯一不香的是 OWT 内部数据结构 代码中没有定义,不像C++看个头文件就知道这个结构里面都是啥,这点对于初学者来说不是很友好。

后续有时间再细致聊聊这两三年中遇到的坑,简单的问题可以留言交流。

这篇关于OWT (Open WebRTC Toolkit) 5.0 初体验与开发环境搭建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/410990

相关文章

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

mysql-8.0.30压缩包版安装和配置MySQL环境过程

《mysql-8.0.30压缩包版安装和配置MySQL环境过程》该文章介绍了如何在Windows系统中下载、安装和配置MySQL数据库,包括下载地址、解压文件、创建和配置my.ini文件、设置环境变量... 目录压缩包安装配置下载配置环境变量下载和初始化总结压缩包安装配置下载下载地址:https://d

将Python应用部署到生产环境的小技巧分享

《将Python应用部署到生产环境的小技巧分享》文章主要讲述了在将Python应用程序部署到生产环境之前,需要进行的准备工作和最佳实践,包括心态调整、代码审查、测试覆盖率提升、配置文件优化、日志记录完... 目录部署前夜:从开发到生产的心理准备与检查清单环境搭建:打造稳固的应用运行平台自动化流水线:让部署像

gradle安装和环境配置全过程

《gradle安装和环境配置全过程》本文介绍了如何安装和配置Gradle环境,包括下载Gradle、配置环境变量、测试Gradle以及在IntelliJIDEA中配置Gradle... 目录gradle安装和环境配置1 下载GRADLE2 环境变量配置3 测试gradle4 设置gradle初始化文件5 i

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Mycat搭建分库分表方式

《Mycat搭建分库分表方式》文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效... 目录分库分表解决的问题分库分表架构添加数据验证结果 总结分库分表解决的问题单表数据量过大带来的性能

Java汇编源码如何查看环境搭建

《Java汇编源码如何查看环境搭建》:本文主要介绍如何在IntelliJIDEA开发环境中搭建字节码和汇编环境,以便更好地进行代码调优和JVM学习,首先,介绍了如何配置IntelliJIDEA以方... 目录一、简介二、在IDEA开发环境中搭建汇编环境2.1 在IDEA中搭建字节码查看环境2.1.1 搭建步

你的华为手机升级了吗? 鸿蒙NEXT多连推5.0.123版本变化颇多

《你的华为手机升级了吗?鸿蒙NEXT多连推5.0.123版本变化颇多》现在的手机系统更新可不仅仅是修修补补那么简单了,华为手机的鸿蒙系统最近可是动作频频,给用户们带来了不少惊喜... 为了让用户的使用体验变得很好,华为手机不仅发布了一系列给力的新机,还在操作系统方面进行了疯狂的发力。尤其是近期,不仅鸿蒙O

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt