使用FreeSwitch SIP服务器构建callab.me等视频会议软件——与Kurento Media Server对比

本文介绍了使用FreeSwitch SIP服务器替代Kurento Media Server搭建视频会议服务的经验。FreeSwitch虽然设置复杂,但提供了更高的视频复用器定制性和流媒体能力。文章详细阐述了FreeSwitch的配置、目录、拨号方案、视频复用器、流媒体功能和电话拨入等关键点,并对比了Kurento的易用性和功能。
摘要由CSDN通过智能技术生成

网上查了查资料,这里整理记录一下。

        本文介绍了我们使用 FreeSwitch (FS) SIP 服务器进行视频会议 SaaS Callab.me的经验,为我们的专业用户取代了 Kurento 媒体服务器。

Callab.me使用 FreeSwitch 技术为其客户提供高清会议和直播

        首先,FS的设置和理解相比Kurento要复杂得多。因此我想先谈谈Kurento Media Server (KMS)。它是一个来自西班牙的欧洲开源项目,仍在维护且非常易于使用。它有几个教程,可让您在很短的时间内创建简单的视频会议软件。在此处查看更多信息:Java - Group Call — Kurento 6.14.0 documentation

        Kurento 在后端支持 NodeJS 和 Java,还为前端提供了 JS 库:https: //github.com/Kurento/kurento-utils-js由于它是一个较旧的库,使用过时且已弃用的 WebRTC 方法,我们对其进行了重构并将结果开源。写这篇文章时,PR 还没有合并。我建议使用我们的更新版本,因为它适用于所有主要浏览器,包括。移动浏览器:General refactor and update of used APIs by piranna · Pull Request #34 · Kurento/kurento-utils-js · GitHub

        Kurento 允许您互相传递参与者的视频。这允许您构建一个简单的视频会议,类似于 Jitsi 或其他通过视频流的解决方案。它还允许您使用 MUX,在 Kurento 上下文中它被称为复合。

        多路复用器将许多用户的视频流合并为一个流,从而为每个用户提供了多路复用器中的一个位置。这降低了每个客户端所需的性能,同时也提高了音频质量。原因:想象一下会议室里有 10 个人。每个人都将其视频发送给其他人。结果,每个人接收 10 个视频+音频流,发送 1 个音频+视频流,总共 22 个流。当使用具有 10 个参与者的 MUX 时,您会接收 1 个音频 + 1 个视频流,并发送 1 个音频 + 视频。这使得 4 个而不是 22 个。对客户端来说很好,它不必将音频流混合到扬声器中,也不必处理 22 个并行连接。对网络也有好处。另一方面,托管媒体服务器的服务器将需要做更多工作来生成多路复用器,将所有视频流+音频流组合在一起。因此,使用多路复用器对于大型会议来说是有意义的,但需要 CPU 能力。

        我们改用 FreeSwitch 的原因是视频复用器的可定制性。在 Kurento 中,您几乎无法对位置或颜色进行任何操作,但在 Freeswitch 中,您可以设计非常灵活的多路复用器布局并更改颜色,甚至背景图像。另一个原因是流媒体的能力。虽然在 Kurento 中,理论上可以使用 ffmpeg 将 mux 流式传输到 YouTube 或 Facebook,但 FreeSwitch 默认支持通过 RTMP 进行流式传输(注意:RTMPS 尚不支持)。最后,FS 是一个 SIP 服务器,通常由电话提供商使用,它允许您非常轻松地为用户提供通过电话拨入的功能。

        反对 FS 的一个重要标志是文档。它比 Kurento 复杂得多,因为它非常开放并且有很多有用的模块。而且在某些时候它的维护也不是很好。开始使用它的一个好方法是通过一些书籍或在线课程学习基本方法。

        在本文中,我将向您简要介绍视频会议的基本设置和使用。

在 FreeSwitch 中,我们有以下重要的关键字:

Directory目录:

        这是允许登录 FreeSwitch 服务器并在此注册的用户列表。在 SIP 服务器中注册基本上就是您的 SIP 电话在输入凭据后执行的操作:它告诉服务器:“我在这里,等待呼叫”。注册后,如果允许,用户可以接听电话或拨打电话。

Dialplan拨号方案:

        这是一个复杂的操作列表,当您拨打某个号码时,服务器将执行该操作。演示安装中有很多示例,例如语音邮件、订餐、代客泊车等,展示了一切的可能性。

— XML_CURL:

        这是 FS 的一个模块(mod_xml_curl | FreeSWITCH Documentation),它允许我们从可以连接到数据库的 WebAPI 请求配置文件,这些文件通常作为 XML 文件存储在服务器上。我们将为目录和拨号方案执行此操作。

· ESL(Event Socket Library事件套接字库):ESL 是一个很棒的功能,它允许我们将任何应用程序(例如后端 Java 应用程序)与 freeswitch 服务器连接并执行一些操作。当您在服务器上安装 Freeswitch 时,它会为您提供 fs_cli 命令来执行操作。fs_cli 的用法与 ESL 的用法完全相同。您可以接收服务器上发生的所有事件并执行操作。有 Java 和 NodeJS 的客户端实现(甚至还有 Python、Ruby 等)。

设置 WebAPI

        将我们的演示存储库 ( GitHub - mxk1011/fs_demo ) 克隆到您的网络服务器上,并使其可用于 FreeSwitch 服务器。当我们的 FreeSwitch 需要拨号方案或目录时,它就会连接到它。这不应该向公众公开!

让我们从拨号方案开始更深入地了解两者:

拨号方案

<?php
    // User $_GET['Caller-Ca
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值