平台 → 技术

技术与 WebRTC

Krona.Chat 基于免费开源 Janus 媒体服务器上的 WebRTC 实时直播构建。媒体流在 Janus 服务器之间的负载均衡由我们自主研发:视频流自动分配到不同地区的数百台服务器上,同时延迟保持在 1 秒以内。

<500 毫秒从模特到观众的典型延迟
数百台服务器同一集群内,按地理位置自动负载均衡
$0媒体服务器许可费:Janus 为开源软件

Janus:免费开源的 WebRTC 媒体服务器

视频流通过开源媒体服务器 Janus WebRTC Server 传输。它是免费的:无论是上线时,还是服务器、模特和观众数量增长时,都无需支付许可费。

Janus 以 SFU(Selective Forwarding Unit,选择性转发单元)方式工作:模特的一路输入流被转发给众多观众,无需为每位观众单独转码。因此,单台媒体服务器即可承载大量观众,视频以极低延迟送达观众。

Janus 服务器之间的媒体流负载均衡

Janus 本身无法在服务器之间分配视频流——我们在 Krona.Chat 平台中自建了媒体流负载均衡。借助它,媒体服务器作为一个集群协同工作:

规模

数百台服务器

负载可分摊到数百台媒体服务器上——增加服务器即可承载更多直播和观众。

地理分布

按地理位置自动分配

视频流自动分配到不同地区的服务器,更靠近模特和观众。

容错

视频流自动恢复

任何服务器都可以重启:它所承载的所有视频流都会自动恢复。

运维

服务器变更无需停机

新服务器可轻松加入集群,任何服务器也都可以移出集群进行维护。

市场上没有替代方案

市场上没有基于免费媒体服务器、支持多服务器 WebRTC 流负载均衡的现成直播平台:已知方案都运行在单台媒体服务器上,无法通过增加服务器来扩展。

Krona.Chat 的多服务器方案在技术和拥有成本上都更具优势:您无需支付媒体服务器许可费,低延迟视频通过您自己的服务器传输,而不是按 GB 计费的昂贵 CDN。

用 WebRTC 取代 HLS:零卡顿的实时视频

使用 HLS 或 DASH 推流时,视频到达观众要延迟数十秒。WebRTC 实时传输视频流,延迟低于 1 秒。这对视频直播站点至关重要:模特对聊天、打赏和 Lovense 玩具的反应,以及私密秀和群组秀,都只有在实时状态下才能实现。

在任意浏览器中直播和观看

  • 观众可在电脑(Windows、macOS、Linux)或手机、平板(Android、iOS)的浏览器中观看——无需插件或应用;
  • 模特直接在浏览器中开播——电脑或手机均可,详见模特后台;
  • 视频画质根据每位观众的网速自适应调整,不会中断其他观众的观看。

平台技术栈

Krona.Chat 视频直播平台所采用的技术和编程语言:

前端

ReactJS

平台各站点的前端:直播站点、模特后台和合作伙伴后台。

视频

WebRTC

浏览器内的实时音视频,延迟低于 1 秒。

媒体服务器

Janus

以 SFU 方式工作的免费开源 WebRTC 媒体服务器。

媒体负载均衡

Krona.Chat 媒体负载均衡器

自主研发:按地区在 Janus 服务器之间分配媒体流。

流量负载均衡

Cloudflare

平台各站点的 Web 流量负载均衡器。

后端

PHP 8.5

平台的服务器端语言。

媒体流

C

处理媒体流并与 Janus 服务器交互。

数据库

MariaDB 11.x / 12.x

平台的关系型数据库。

数据库集群

Galera Cluster

至少由三台服务器组成的 MariaDB Galera 集群,保障数据库高可用。

视频直播站点需要多少台媒体服务器?

作为参考,一台配备 1 Gbit/s 保证带宽端口的独立媒体服务器,在持续负载下可提供约 700 Mbit/s 的可用带宽。服务器数量取决于同时在线的直播数、观众数和所选画质——从 480p 到 4K。

使用服务器计算器按您的负载估算所需配置。

WebRTC 与媒体服务器常见问题

Krona.Chat 使用哪种媒体服务器?

Janus WebRTC Server——一款以 SFU 方式工作的免费开源媒体服务器。无论集群中有多少台服务器,都无需支付媒体服务器许可费。

WebRTC 视频流如何在服务器之间负载均衡?

Krona.Chat 平台在 Janus 服务器之间对媒体流进行负载均衡。视频流自动分配到不同地区的媒体服务器上,一个集群可运行数百台服务器。

媒体服务器重启会怎样?

该服务器承载的所有视频流都会自动恢复。新服务器可以加入集群,任何服务器也都可以移出集群进行维护。

为什么选择 WebRTC 而不是 HLS?

WebRTC 实时传输视频,延迟低于 1 秒,而 HLS 会延迟数十秒。对视频直播站点而言,模特与观众之间的实时互动——聊天、打赏、私密秀——只有 WebRTC 才能实现。

视频直播站点需要多少台服务器?

作为参考,每台配备 1 Gbit/s 端口的媒体服务器约有 700 Mbit/s 可用带宽。具体数量取决于直播数、观众数和视频画质;服务器计算器可给出估算。

平台基于什么技术栈构建?

前端——ReactJS,视频——WebRTC,媒体服务器——Janus 配合 Krona.Chat 媒体负载均衡器,Web 流量负载均衡——Cloudflare,服务器端语言——PHP 8.5,媒体流与 Janus——C,数据库——Galera 集群中的 MariaDB 11.x / 12.x。

低延迟视频传输的成本如何?

Janus 媒体服务器是免费的,视频通过您自己的服务器以固定带宽成本传输,而不是通过按 GB 计费的 CDN。因此,即使观众规模增长,媒体服务器的拥有成本和低延迟视频传输成本也能保持在较低水平。