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

- 信令服务器: Janus Gateway (功能强大,支持多种插件,包括 WebRTC)
- 媒体服务器: Kurento Media Server (专门为 WebRTC 设计,提供 SFU 功能,适合一对多、多对多的音视频场景)
本教程将以 CentOS 7/8/9 为例。
第一部分:环境准备
在开始之前,请确保您的服务器满足以下条件:
- 操作系统: CentOS 7, 8, 或 9 (64位)
- 服务器配置: 建议 2核CPU、2GB以上内存、带宽根据您的并发用户数决定
- 网络: 确保服务器的防火墙和云服务商(如阿里云、腾讯云、AWS)的安全组已开放以下端口:
- 80 (HTTP): 用于访问 Web 演示页面。
- 443 (HTTPS): 强烈建议使用,用于安全访问。
- 7088 (TCP/UDP): Janus Gateway 的默认 WebRTC 端口。
- 8888 (TCP): Kurento Media Server 的默认端口。
- 19305 (TCP/UDP): STUN/TURN 服务器端口(如果使用)。
- 权限: 具有root权限的用户。
第二部分:安装信令服务器 - Janus Gateway
Janus Gateway 是一个通用 WebRTC 服务器,它本身不处理媒体流,而是通过插件(如我们稍后会配置的 janus.plugin.streaming)来转发流,它同时扮演了信令服务器和轻量级媒体服务器的角色。
步骤 1: 安装依赖
更新系统并安装编译 Janus 所需的依赖库。

# 更新系统 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
-
调整配置文件权限:
sudo chown -R root:root /opt/janus/etc/janus/ sudo chmod 755 /opt/janus/etc/janus/
-
修改核心配置文件: 打开
janspp.conf文件,确保 HTTP REST API 和 WebRTC 相关配置正确。
(图片来源网络,侵删)sudo nano /opt/janus/etc/janus/janus.jcfg
找到
[general]和[plugins]部分,确保api_secret和admin_key已设置,并确保full_trickle是yes,这对 WebRTC 连接至关重要。 -
修改 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: 访问测试页面
-
Kurento 自带测试页面: 这是最快验证 Kurento 是否工作的方法。
# 启动 Kurento 的示例 HTTP 服务器 sudo kurento-media-server-test
然后在浏览器中访问
http://<你的服务器IP>:8888/,你就能看到一个简单的 WebRTC 测试界面,可以测试摄像头和麦克风。 -
**Janus Web 演示
