凌峰创科服务平台

CentOS如何搭建WebRTC服务器?

下面我将为您提供一个完整、详细、可操作的教程,使用业界非常流行的开源组合:

CentOS如何搭建WebRTC服务器?-图1
(图片来源网络,侵删)
  • 信令服务器: Janus Gateway (功能强大,支持多种插件,包括 WebRTC)
  • 媒体服务器: Kurento Media Server (专门为 WebRTC 设计,提供 SFU 功能,适合一对多、多对多的音视频场景)

本教程将以 CentOS 7/8/9 为例。


第一部分:环境准备

在开始之前,请确保您的服务器满足以下条件:

  1. 操作系统: CentOS 7, 8, 或 9 (64位)
  2. 服务器配置: 建议 2核CPU、2GB以上内存、带宽根据您的并发用户数决定
  3. 网络: 确保服务器的防火墙和云服务商(如阿里云、腾讯云、AWS)的安全组已开放以下端口:
    • 80 (HTTP): 用于访问 Web 演示页面。
    • 443 (HTTPS): 强烈建议使用,用于安全访问。
    • 7088 (TCP/UDP): Janus Gateway 的默认 WebRTC 端口。
    • 8888 (TCP): Kurento Media Server 的默认端口。
    • 19305 (TCP/UDP): STUN/TURN 服务器端口(如果使用)。
  4. 权限: 具有root权限的用户。

第二部分:安装信令服务器 - Janus Gateway

Janus Gateway 是一个通用 WebRTC 服务器,它本身不处理媒体流,而是通过插件(如我们稍后会配置的 janus.plugin.streaming)来转发流,它同时扮演了信令服务器和轻量级媒体服务器的角色。

步骤 1: 安装依赖

更新系统并安装编译 Janus 所需的依赖库。

CentOS如何搭建WebRTC服务器?-图2
(图片来源网络,侵删)
# 更新系统
sudo yum update -y
# 安装 EPEL 仓库(CentOS 7/8/9 通常需要)
sudo yum install -y epel-release
# 安装编译工具和依赖库
sudo yum groupinstall "Development Tools" -y
sudo yum install -y git cmake libmicrohttpd-devel libnice-devel libsrtp-devel libssl-dev libcurl-dev libogg-dev libopus-dev liblua5.3-dev libconfig-dev jansson-devel libtool uuid-devel libglib2.0-dev

注意: libssl-dev 在 CentOS 中通常是 openssl-devel,如果命令找不到,请使用 sudo yum search openssl 查找正确的包名。

步骤 2: 编译和安装 Janus

Janus 没有官方的 Yum 包,所以我们需要从源码编译。

# 创建工作目录
cd /opt
sudo mkdir -p janus-build
cd janus-build
# 克隆最新的 Janus 源码
sudo git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway
# 创建构建目录
sudo mkdir -p build
cd build
# 配置编译选项 (开启插件和 Web 界面)
sudo cmake .. -DCMAKE_INSTALL_PREFIX=/opt/janus \
              -DENABLE_STATIC=no \
              -DENABLE_POSTGRES=no \
              -DENABLE_MYSQL=no \
              -DENABLE_RABBITMQ=no \
              -DENABLE_NICE=1 \
              -DENABLE_PLUGIN_STREAMING=1 \
              -DENABLE_PLUGIN_RECORDPLAY=1 \
              -DENABLE_PLUGIN_VIDEOROOM=1 \
              -DENABLE_PLUGIN_SIP=1 \
              -DENABLE_RESTAPI_HTTP=1 \
              -DENABLE_RESTAPI_HTTPS=1
# 编译 (这个过程可能需要10-30分钟,取决于服务器性能)
sudo make
sudo make install

步骤 3: 配置 Janus

  1. 调整配置文件权限:

    sudo chown -R root:root /opt/janus/etc/janus/
    sudo chmod 755 /opt/janus/etc/janus/
  2. 修改核心配置文件: 打开 janspp.conf 文件,确保 HTTP REST API 和 WebRTC 相关配置正确。

    CentOS如何搭建WebRTC服务器?-图3
    (图片来源网络,侵删)
    sudo nano /opt/janus/etc/janus/janus.jcfg

    找到 [general][plugins] 部分,确保 api_secretadmin_key 已设置,并确保 full_trickleyes,这对 WebRTC 连接至关重要。

  3. 修改 WebRTC 插件配置:

    sudo nano /opt/janus/etc/janus/janus.plugin.streaming.jcfg

    确保插件是启用的,您可以在这里预置一些视频流源。

步骤 4: 创建 Systemd 服务

为了方便管理 Janus,我们将其设置为系统服务。

# 创建服务文件
sudo nano /etc/systemd/system/janus.service

粘贴到文件中:

[Unit]
Description=Janus WebRTC Server
After=network.target
[Service]
Type=simple
User=root
ExecStart=/opt/janus/build/janus --configs-folder=/opt/janus/etc/janus
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target

然后启动并设置开机自启:

sudo systemctl daemon-reload
sudo systemctl start janus
sudo systemctl enable janus
# 检查状态
sudo systemctl status janus

第三部分:安装媒体服务器 - Kurento

Kurento 是一个功能强大的 SFU(Selective Forwarding Unit,选择性转发单元),专门优化了 WebRTC 性能,可以高效地将一个音视频流转发给多个观众。

步骤 1: 安装 Kurento 仓库和依赖

Kurento 官方提供了 Yum 仓库,安装非常方便。

# 安装 EPEL 仓库(如果之前没装)
sudo yum install -y epel-release
# 安装 Kurento 仓库
sudo rpm -Uvh http://www.kurento.org/releases/el/kurento-release-repo-1.0-1.el7.centos.koji.x86_64.rpm
# 安装 Kurento Media Server
sudo yum install -y kurento-media-server
# 安装 Kurento 模块和示例 (包含 Web 测试页面)
sudo yum install -y kurento-module-elements-server kurento-module-filters-server kurento-example-js

步骤 2: 配置 Kurento

Kurento 的默认配置通常已经足够,无需太多修改,其配置文件位于 /etc/kurento/kurento.conf.json

步骤 3: 启动 Kurento 服务

同样,我们将 Kurento 设置为系统服务。

sudo systemctl start kurento-media-server
sudo systemctl enable kurento-media-server
# 检查状态
sudo systemctl status kurento-media-server

第四部分:整合与测试

Janus 和 Kurento 都已经安装并运行,我们需要修改 Janus 的配置,让它将媒体流转发给 Kurento。

步骤 1: 修改 Janus 的 Streaming 插件配置

打开 janus.plugin.streaming.jcfg 文件:

sudo nano /opt/janus/etc/janus/janus.plugin.streaming.jcfg

在文件末尾,添加一个指向 Kurento 服务器的流源,找到 # Local sources 部分,在下面添加:

# Kurento Test Pipeline
type = rtmp
description = Kurento Test Pipeline
id = 1
# 这里是 Kurento 的默认地址和端口
# Janus 会将流推送到这里,然后由 Kurento 处理
# 注意:Kurento 默认不支持 RTMP,这个配置通常用于其他场景
# 对于 Kurento,我们通常使用其内置的 WebRTC 测试页面
# 所以这个步骤可以跳过,直接使用 Kurento 自带的测试页面

重要提示: Janus 的 streaming 插件和 Kurento 的集成通常更复杂,对于初学者,最简单的测试方法是直接使用 Kurento 自带的 WebRTC 测试页面,因为它已经内置了信令和媒体处理逻辑,Janus 可以作为一个独立的信令服务器用于更复杂的自定义应用。

步骤 2: 访问测试页面

  1. Kurento 自带测试页面: 这是最快验证 Kurento 是否工作的方法。

    # 启动 Kurento 的示例 HTTP 服务器
    sudo kurento-media-server-test

    然后在浏览器中访问 http://<你的服务器IP>:8888/,你就能看到一个简单的 WebRTC 测试界面,可以测试摄像头和麦克风。

  2. **Janus Web 演示

分享:
扫描分享到社交APP
上一篇
下一篇