在本文中,我们将使用 Janus WebRTC 服务器和 SFU 创建一个视频通话应用程序
我们还将了解 Metered.ca SFU 以及为什么它是比 Janus Server 更好的选择
Janus 是一个开源、通用的 WebRTC SFU 服务器。它是一个模块化网关,通过处理复杂的 WebRTC 协议来促进实时通信应用程序,并为媒体交换提供稳定的服务器
模块化架构: Janus 有一个基于插件的系统,其中每个插件都有一些特定的功能。这种模块化允许定制和扩展
协议处理:Janus 管理建立 webrtc 连接所需的信令和协商。
互操作性: Janus 支持媒体编解码器,并兼容不同的客户端和浏览器,因此 Janus 具有广泛的兼容性
可扩展性:Janus 旨在高效处理多个连接,可在特定地理区域内进行扩展。 (也就是说,如果所有使用 Janus 的用户都在一个小地理区域内,它就会正常工作)
SFU 或选择性转发单元是一种媒体服务器架构,用于 WebRTC 应用程序中,以在不同媒体参与者之间有效路由媒体流
SFU 接收来自每个参与者的传入视频流,然后根据请求有选择地将流转发给其他参与者。
即每个参与者接收参与者请求的流,同时所有参与者将其流推送到 SFU
可扩展性:SFU 可以处理大量连接,因为 SFU 不涉及编码和解码等计算密集型任务,而只是将流转发给用户
低延迟: SFU 转发流而不进行处理,从而实现低延迟。但如果您的用户遍布世界各地,您需要一个全球分布式 SFU 服务,例如 metered.ca cloud sou
带宽优化
灵活性和控制:参与者对于他们想要接收的内容有更大的灵活性,例如,如果他们只想接收音频或接收选定参与者的视频流,那么他们可以选择这样做
成本效率:由于与 MCU 相比,SFU 需要更少的处理,云上较小的实例可以为您工作
保持媒体质量: SFU 保持媒体质量,因为它们不对媒体流进行任何处理,只是将流转发给请求的参与者。
更轻松地实现高级功能
提高可靠性:服务器上无需处理媒体,因此故障点更少。 SFU 还可以集群化以实现冗余,从而确保即使一台服务器遇到任何问题,服务仍然可用。
将 Janus SFU 集成到您的应用程序中涉及以下步骤。以下是在您的应用程序中实施 Janus 的分步过程。
系统准备
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
您可以轻松地在 ubuntu 或 Debian 上安装这些依赖项
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
下载并构建 Janus
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
git clone https://github.com/meetecho/janus-gateway.git
cd janus-gateway
sh autogen.sh
配置 Janus
编辑配置文件
启用所需的插件
设置 SSL 证书
生成 SSL 证书
更新配置
启动 Janus 服务器
./configure --prefix=/opt/janus
验证操作
设置开发环境
选择前端框架
包含 WebRTC 库
建立信令服务器
创建或加入视频室
处理本地媒体流
make sudo make install sudo make configs
将本地流附加到 HTML 中的视频元素以向用户播放流
5.发布到 Janus
使用 RTCPeerConnection 创建 SDP 报价
使用 API 将报价发送给 Janus
接收来自Janus的SDP应答并将其设置为远程描述
6.订阅远程流
处理加入消息和活动消息以收听其他会议参与者的通知
为订阅者创建对等连接,即为每个远程参与者创建一个新的 RTCPeerConnection
处理远程流,获取远程流并将其附加到 HTML 视频元素以在用户 Web 浏览器上播放视频
实现事件监听器和处理程序
Metered Global Cloud SFU 是 Metered.ca 推出的基于云的选择性转发单元
借助 Metered SFU,开发人员可以构建任何类型的应用程序,包括视频、音频和数据传输
计量 SFU 使用本机 WebRTC API 和 HTTP 运行,无需任何专有 SDK。
用户还会根据地理位置自动路由到最近的 SFU
多个 SFU 使用高速互连在全球范围内相互连接,确保尽可能低的延迟
全球分布:
平台独立性
灵活的发布订阅模型:
可扩展性
成本效率:
建立连接
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
b.发送本地 SDP 报价
c.接收SFU远程SDP
d.连接已建立
GLib zlib pkg-config Jansson libconfig libnice (at least v0.1.16 suggested, v0.1.18 recommended) OpenSSL (at least v1.0.1e) libsrtp (at least v2.x suggested)
发布曲目
apt install libmicrohttpd-dev libjansson-dev \ libssl-dev libsofia-sip-ua-dev libglib2.0-dev \ libopus-dev libogg-dev libcurl4-openssl-dev liblua5.3-dev \ libconfig-dev pkg-config libtool automake
b.生成并发送 SDP 报价
将更新的 SDP 报价发送给 SFU
接收并设置 SFU 对 SDP 的响应
订阅曲目
向 SFU 请求曲目订阅
可扩展性
媒体分布
大规模流媒体
平台独立性
灵活的发布订阅模式
成本效率
全球SFU网络:
部署和维护
计量 SFU:
两面神
可扩展性和性能
计量 SFU
两面神
成本结构
计量 SFU
两面神
灵活性和功能
计量 SFU
两面神
易于集成
计量 SFU
计量 TURN 服务器
API: 使用强大的 API 进行 TURN 服务器管理。您可以执行以下操作:通过 API 添加/删除凭据、通过 API 检索每个用户/凭据和用户指标、通过 API 启用/禁用凭据、通过 API 按日期检索使用数据。
全球地理位置定位:自动将流量定向到最近的服务器,以实现尽可能低的延迟和最高的质量性能。全球任何地方的延迟均低于 50 毫秒
全球所有地区的服务器:多伦多、迈阿密、旧金山、阿姆斯特丹、伦敦、法兰克福、班加罗尔、新加坡、悉尼、首尔、达拉斯、纽约
低延迟: 低于 50 毫秒的延迟,在世界任何地方。
经济高效:即用即付定价,并提供带宽和批量折扣。
轻松管理: 获取使用日志、帐户达到阈值限制时的电子邮件、账单记录以及电子邮件和电话支持。
符合标准: 符合基于 UDP、TCP、TLS 和 DTLS 的 RFC 5389、5769、5780、5766、6062、6156、5245、5768、6336、6544、5928。
多租户: 创建多个凭据并按客户或不同应用分开使用。获取使用日志、计费记录和阈值警报。
企业可靠性: SLA 正常运行时间达 99.999%。
企业规模: 不限制并发流量或总流量。计量 TURN 服务器提供企业可扩展性
每月 5 GB 免费: 通过免费计划每月获得 5 GB 免费 TURN 服务器使用量
在端口 80 和 443 上运行
支持 TURNS SSL 以允许通过深度数据包检测防火墙进行连接。
同时支持 TCP 和 UDP
免费无限制 STUN
以上是Janus WebRTC 服务器和 SFU:实时视频通话应用程序的详细内容。更多信息请关注PHP中文网其他相关文章!