WebRTC-SFU服务器-Janus部署【保姆级部署教程】
创始人
2024-12-20 11:35:46
0

一、SFU

WebRTC SFU(Selective Forwarding Unit)构架是一种通过服务器来路由和转发WebRTC客户端音视频数据流的方法。这种构架的核心特点是将服务器模拟成一个WebRTC的Peer客户端,从而实现了音视频流的直接转发。

在SFU构架中,服务器作为中心节点,但并不负责音视频流的混合处理,而是直接将其从一个客户端转发到其他客户端。这种构架的优点在于,由于数据包是直接转发,不需要进行编码、解码等复杂处理,因此对CPU、内存等机器资源的消耗较小。同时,直接转发音视频流也大大降低了延迟,提高了实时性。

SFU构架的另一个特点是具有灵活性,能够更好地适应不同的网络状况和终端类型。此外,由于服务器只负责转发,不做太重的处理,所以服务器的压力会相对较低,配置要求也不高。

在WebRTC中,SFU构架与MCU(MultiPoint Control Unit)和Mesh构架有所不同。MCU是一种传统的中心化构架,负责所有的视频编码、转码、解码、混合等复杂逻辑,每个客户端只需与MCU服务器建立连接即可。而Mesh构架则是每个客户端都与其他客户端建立连接,形成网状结构。相比之下,SFU构架更加轻量级,适合在大规模场合中使用,具有更好的伸缩性。

这里我直接怼一个Mesh、MCU、SFU的构架图,不同构架优缺点不多言。

在这里插入图片描述

二、Ubuntu安装Janus

Janus官方文档:https://janus.conf.meetecho.com/

Janus github:https://github.com/meetecho/janus-gateway

2.1安装依赖

  • GLib
sudo apt-get update sudo apt-get install libglib2.0-dev pkg-config --modversion glib-2.0 //查看版本 
  • zlib
sudo apt install zlib1g zlib1g-dev dpkg -l | grep zlib 
  • pkg-config
sudo apt install pkg-config pkg-config --version 
  • Jansson
Jansson库可能并未直接包含在Ubuntu的软件库中,因此你可能需要从源代码编译安装。以下是从源代码编译安装的步骤:  a. 下载Jansson源码: git clone https://github.com/akheron/jansson  b. 安装依赖: 在编译Jansson之前,你可能需要安装一些依赖库。你可以尝试以下命令(这些依赖可能会随着Jansson的版本而变化): sudo apt install autoconf libtool c. 编译和安装Jansson: 进入下载的Jansson源码目录,并运行以下命令进行编译和安装: cd jansson   autoreconf -i  # 反解析configure.ac文件,生成编译工具   ./configure   make   sudo make install 
  • libconfig
a.下载源码文件 b.解压 tar -zxvf libconfig-x.y.z.tar.gz c.配置编译选项 如果你需要更改默认的编译选项或安装位置,可以使用./configure脚本进行配置。例如,如果你想将libconfig安装到/usr/local目录(这是默认位置),可以运行: cd libconfig-x.y.z ./configure --prefix=/usr/local 如果你不需要更改任何配置,可以直接运行./configure。 d.编译安装 make make install 
  • libnice (建议至少使用v0.1.16,推荐使用v0.1.18)
libnice 是一个用于实现 ICE(交互式连接建立)协议的库,它是 Janus 的一个重要依赖项。以下是在 Ubuntu 上安装 libnice 的步骤: 1. 安装依赖项 首先,你需要安装一些依赖项: sudo apt update sudo apt install python3-pip meson ninja //ninja需要单独安装 2. 下载和编译 libnice 从 GitLab 上克隆 libnice 代码库:   git clone https://gitlab.freedesktop.org/libnice/libnice.git   cd libnice 编译 libnice:   meson --prefix=/usr build   ninja -C build   sudo ninja -C build install 3. 验证安装** 运行以下命令检查 libnice 是否已成功安装:   pkg-config --cflags --libs nice 如果你看到 libnice 的编译选项和链接库,则安装成功。 **注意:** * 以上步骤适用于 Ubuntu 18.04 及更高版本。 * 如果你使用的是其他版本的 Ubuntu,可能需要调整一些步骤。 * 请确保你拥有足够的权限来执行这些命令。 git clone https://gitlab.freedesktop.org/libnice/libnice cd libnice meson --prefix=/usr build && ninja -C build && sudo ninja -C build install 
  • ninja
sudo apt update sudo apt install ninja-build 
  • OpenSSL (至少v1.0.1e)
apt install openssl openssl version 
  • libsrtp (建议至少v2.x)
wget https://github.com/cisco/libsrtp/archive/v2.2.0.tar.gz tar xfv v2.2.0.tar.gz cd libsrtp-2.2.0 ./configure --prefix=/usr --enable-openssl make shared_library && sudo make install pkg-config --modversion libsrtp2 //查看版本 Janus配置脚本自动检测您安装了哪个库,并自动链接到正确的库,如果两者都安装了则选择2.x。如果您希望选择1.5或1.6(不推荐),请在配置Janus时传递——disable-libsrtp2以强制它使用旧版本。 如果你手动编译安装了 libsrtp,则需要在编译 Janus 时使用 --with-libsrtp 选项指定 libsrtp 的安装路径。 例如,如果你将 libsrtp 安装到 /usr/local 目录,则编译 Janus 时可以使用以下命令: ./configure --with-libsrtp2=/usr/ --enable-srtp make sudo make install 这里不指定,在后面J

相关内容

热门资讯

据公告内容!佛手大菠萝辅助,小... 据公告内容!佛手大菠萝辅助,小旋风辅助器,一直有挂(教你透牌教程)-哔哩哔哩1、佛手大菠萝辅助ai辅...
有消息称!传送屋激k怎么开挂,... 有消息称!传送屋激k怎么开挂,掌电竞技辅助器,攻略方法(好像是真的挂)-哔哩哔哩亲,关键说明,传送屋...
玩家实测!小程序游戏辅助器(辅... 玩家实测!小程序游戏辅助器(辅助挂)开挂透视辅助技巧(一直是真的挂)-哔哩哔哩1、小程序游戏辅助器系...
最新消息!pokemmo手机脚... 最新消息!pokemmo手机脚本辅助器,决战十水三辅助,切实是真的挂(科普科技教程)-哔哩哔哩1、决...
据通报!wepoker开挂事件... 据通报!wepoker开挂事件,顺欣茶楼辅助软件,细节方法(总是真的是有挂)-哔哩哔哩顺欣茶楼辅助软...
透视游戏!pokermaste... 透视游戏!pokermaster脚本,南丰数刀脚本,确实真的有挂(详情必备教程)-哔哩哔哩1、玩家可...
科技新动态!禅游游戏辅助(辅助... 科技新动态!禅游游戏辅助(辅助挂)开挂透视辅助攻略(总是有挂)-哔哩哔哩1、用户打开应用后不用登录就...
反观!广东雀神智能插件安装免费... 反观!广东雀神智能插件安装免费,微信小程序微乐房间怎么开挂,大神讲解(切实真的有挂)-哔哩哔哩1、微...
值得注意的是!wpk透视工作室... 值得注意的是!wpk透视工作室,创思维激k透视源码,都是是真的挂(揭露线上教程)-哔哩哔哩1、创思维...
玩家爆料!宝宝浙江游戏辅助是真... 玩家爆料!宝宝浙江游戏辅助是真的假的(辅助挂)开挂透视辅助app(果然是有挂)-哔哩哔哩1、很好的工...