2023 年 WebRTC 100 大开源项目

WebRTC 开源生态系统非常庞大,而且与日俱增。它涵盖了很多方面: 浏览器、桌面、移动设备、服务器、物联网等。

从提供一个 WebRTC 功能(如录制音频文件)的单一库到可随时部署的完整通信平台,您可以获得所需的一切。作为开发人员,这就像在超市购物一样!

在一年多的时间里,我开始独自列举我发现的一些优秀 WebRTC 库。我的目的并不是要列出一个清单,而是想发现新事物并比较不同的解决方案。我经常被问到 “我应该用什么解决方案来做……”,而且大多数时候这个话题对我来说也是新的 ),所以这是一种发现新库和开源组件的方式。

最近,我将这份 WebRTC 开源列表排入了前 100 名,并认为分享这份列表可能会很有趣。这既不是 “名人堂”,也不是 “奥斯卡 “提名名单,而只是一份 WebRTC 开源软件清单,涵盖了当今大多数令人担忧的问题。

注:我撒了点小谎,其中列出的库不到 100 个…

如何组织?

百强榜分为几个类别:

  • WebRTC 堆栈
  • 媒体平台
  • 媒体服务器
  • Turn 服务器
  • 信令服务器
  • 独立库

对于每个类别,我都尝试根据 GitHub 中的星级数量和过去一年(自 2022 年 8 月起)的增长情况对开源进行排序。

我还尝试为每个类别建立自己的 WebRTC 开发者象限。请记住,我不是来自Gardner😎,也不是分析师,这只是我今天的感悟,也是展开讨论、获得反馈的一种方式,也许还可以看看我可能错过的其他项目。

类一:WebRTC 堆栈

第一部分针对现有的 WebRTC 堆栈。

2023 年 WebRTC 100 大开源项目
Webrtc 开发者象限:Stacks 2023

以下是每个堆栈的一些附加详细信息。

StacksStarsGrowthUsage
LibWebRTC??C/C++
Browsers
Mobile
Desktop
Pion11kHighGo
Server
IoT
React-Native WebRTC4,3kMediumJavaScript
Mobile
Flutter3,7kMediumDart
Mobile
AIORTC3,5kMediumPython
Server
IoT
WebRTC.rs3,2kVery HighRust
Server
Node-WebRTC (2)2,6k=Node.js
Server
LibDataChannel1,2kVery HighNode.js
Server
SipSorcery1,1kVery HighC#
Desktop
Server
Unity/Xbox
RawRTC (1)0,36kLowC/C++
Native
Werift (3)O,33kVery HighNode.js
Server

即使我们不能与原始的 LibWebRTC 相提并论,但在浏览器之外、在谷歌堆栈无法访问的环境中运行的其他堆栈也在显著增长。

其中,Pion 引起了大多数人的兴趣。Pion背后的原作者 Sean DuBois 成功地建立了一个伟大的社区,最近还出现了一些令人兴奋的新用例,比如在OBS中增加了使用WebRTC进行流媒体直播的可能性。如果有机会,我想使用 Pion。但我需要先学习Go。

至于其他的,在 ALE 中,我们将SipSorcery等用于Rainbow C# SDK。它允许我们的开发人员为桌面和服务器构建具有 WebRTC 功能的本地应用程序。例如音频/视频 P2P 和群组呼叫,以及通过我们的 WebRTC 网关或 Rainbow Hub Cloud PBX 进行混合呼叫。我们还有一些通过 Unity 面向 Metaverse/VR/AR 世界的优秀项目。

对于我们的 Rainbow 移动应用程序和移动 SDK,我们使用 LibWebRTC。我们还为需要的用户提供了 React-Native SDK,但由于 RT 移动应用程序的开发比较复杂(本地呼叫集成、后台模式、推送……),我们更倾向于使用本地语言开发 UCaaS 客户端,并针对每个平台进行优化,以提供最佳体验。

(1) RawRTC 不活跃, (2) Node-WebRTC 不活跃, (3) Werift 不完整且与其他产品处于同一水平。

类二:完整 WebRTC 解决方案

完整解决方案是基于 WebRTC 的协作和/或视频平台,同时提供服务器端和终端用户应用程序。这里需要的是 IT/DevOps,而不是开发技能。有些解决方案完全不基于视频,但都使用 WebRTC 或 WebRTC 的部分功能。

2023 年 WebRTC 100 大开源项目
Webrtc 开发者象限:2023 年解决方案
Media PlatformsStarsGrowthUsage
Rocket.chat36,1kHighJS/Node.js
Collaboration and Communication/Chat OmniChannel + Video (using Jitsi/BBB/…)
WebTorrent28,1kMediumJS/Node.js
WebTorrent/Video Streaming
Mattermost26,1kHighGo(Pion)/JS
Collaboration and Communication Video platform
Jitsi Meet20,1kMediumJava/JS/Native
WebRTC conference server to host + applications and SDK
SnapDrop16kMediumJS/PWA
Share files like AirDrop
Tinode10,5kMediumGo (server)
JS/Swift/Android/Python
Instant messaging server
BigBlueButton8kLowFreeswitch/Kurento
Virtual Classroom Software (integrated to Moodle)
ShareDrop6,7kHighJavaScript
Files sharing like AirDrop
WebWormHole1,7kLowWebAssembly/Go
Data sharing
OpenVidu1,6kLowKurento
Video platform with ready to integrate video components
Briefing1,2kLowNode.JS/Web based on Simple-Peer/IOS client
Mesh conference server
Galene0,8kMediumGo (Pion)/JS
Easy to deploy SFU Video Server with JS client (Android in progress)

Rocket.chat 和 MatterMost 是集成功能最多的开源通信平台。如果您需要的不仅仅是视频服务器,还有其他领先产品。

BBB 是教育领域的最佳选择。在法国,政府已决定为我们的孩子使用它: [法国教育部选择了 bigbluebutton]

对于想要控制 WebRTC 的开发人员来说,Jitsi(诞生于阿尔萨斯)是最容易部署的解决方案,同时具有完全可集成、可定制和可调 (WebRTC) 功能。

类三:WebRTC 媒体服务器

这个类别针对的是提供完整媒体服务器的开源库,媒体服务器允许多个用户至少使用音频、视频、共享和即时消息进行实时交互。

2023 年 WebRTC 100 大开源项目
Webrtc 开发者象限:服务器 2023
Media ServersStarsGrowthUsage
SimpleRealtime Server22,3kLowC/C++
HLS/WebRTC/RTMP
Publish (push) and subscribe (play) server model
Janus7,3kHighC/C++
SFU/SIP Gateway
General purpose based on plugins
MediaMTX7,2kHighGo
SRT/WebRTC/RTSP/RTMP
Media broker
MediaSoup5,4kHighC++/Rust/Node.js
SFU
Client and server
LiveKit5,3kVery HighGo with Pion
SFU
SDK for a lot of platforms
Pion Ion (1)3,8kMediumGo/Flutter
SFU
Several SDKs
Ant-Media3,8kHighJava
HLS/RTMP/RTSP/WebRTC
SDK for all platforms
Kurento NEW
Kurento (2)
3kFlatC++
SFU/MCU
media transmission, processing, recording, and playback and computer vision
Licode3kFlatC++/Node.js
MCU
Streaming and recording
Jitsi-VideoBridge2,7kLowJava/Kotlin
SFU</br/>Highly scalable
Freeswitch2,5kLowC/C++
PBX/IVR/Conferences
Interconnect Phone and WebRTC
WebRTC-Streamer2,3kMediumC++
V4L2/RTSP/WebRTC
Streamer accepting multiple formats, to Web, Jitsi, Janus
OvenMediaEngine2,2kFlatC/C++
WebRTC, SRT, RTMP, RTSP, and MPEG2-TS over HTLS
Sub-Second Latency Streaming Server for large scale
Kamailio1,9kFlatC/C++
VoIP/SIP Gateway, WebRTC
Open Source SIP Server with WebRTC to interconnect with PBX
Go2RTC1,8kMediumGo
Ultimate camera streaming application with support RTSP, RTMP, HTTP-FLV, WebRTC, MSE, HLS, MP4, MJPEG, HomeKit, FFmpeg
Asterisk1,6kLowC
PBX/PSTN/VoIP/WebRTC
Open Source PBX and telephony toolkit
MiroTalk SFU1,4kMediumC++/Node.js
SFU
Based on MediaSoup)
RTSPToWeb1,3kMediumGo
RTSP/WebRTC
converts your RTSP streams to formats consumable in a web browser
Medooze1,2kLowC++ (+ Node.js/Go integration)
MCU
WebRTC Media Server
Membrane1kLowElixir/C++
SFU/Processing/Transcoding
Advanced multimedia processing framework
Ion-SFU0,86kMediumGo
SFU
Low dependencies SFU. Used by Livekit
Broadcast-box0,32kMediumGo
Broadcast server using Whip
JellyFish0,05kLowElixir
RTSP/HLS/WebRTC
Based on Membrane
InLive Hub SFU0,02kLowGo
SFU
Based on Pion

这份列表中既有成熟的 WebRTC pur 服务器实施,也有源自 VoIP 系统的服务器,还有 Pion Stack 使用的新服务器。还有一些流媒体服务器增加了 WebRTC 兼容性。

Golang 语言受到了真正的推崇。这也是学习这种语言的第二个原因。

最后,根据您的需求,您可以有多种选择。

(1) Pion Ion,似乎自 2022 年年中就不再活跃 (2) Kurento: 该 git 似乎自 2022 年末起不再活跃。

类四:TURN 服务器

TURN 服务器是一种附加设备(无论是否需要),可让复杂网络背后的用户连接到您的解决方案。

2023 年 WebRTC 100 大开源项目
Webrtc 开发者象限:STUN/TURN 2023

我已经写过一篇文章和 Coturn 中现有的 TURN 服务器。下面是另一份名单:

TURN serversStarsGrowthLanguage
Coturn9,5kVery HighC/C++
Pion Turn1,5kMediumGo
Turn-RS0,2kLowRust
Eturnal0,2kMediumC/Erlang
Violet0,1kMediumC

毫无疑问,如果您需要一个强大的 TURN 服务器,Coturn 是使用和部署最多的服务器。尽管经历了一段困难时期,但 Coturn 现在又成为了一个强大的开源软件,有多个贡献者(ALE 的 thib-ack就是其中之一 )。

如果您正在寻找替代方案,ProcessOne 的 Eturnal 也是一个不错的选择。Pion Turn 并不是一个 “可立即配置 “的 Turn 服务器,而是一个工具包,用于构建集成到解决方案中的自己的 Turn 服务器。

类五:WebRTC 信令服务器

信令服务器是在两个或多个参与者之间交换 P2P 或电话会议所需的所有信息的服务器。它包括协商通话、管理通话和结束通话所需的信息。通常,WebRTC 信令消息与该服务器内的纯粹功能消息混合在一起。

由于主要参与者使用各自的信令方法和协议,因此很难在此定义一个象限。

2023 年 WebRTC 100 大开源项目
Webrtc 开发者象限:2023 年信令服务器
Signaling serversStarsGrowthUsage
ActivityPub-Mastodon43,4kVery HighRuby/Node.js
Social network server
Matrix-Synapse11,2kLowPython
Open protocol for decentralised, secure communications
Simple-Peer (1)6,9kMediumNode.js/JS
P2P and Mesh
Ejabberd/Jingle (3)5,6kMediumErlang/OTP
Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)
Matrix-Dendrite4,8kLowGo
Open protocol for decentralised, secure communications
Matrix second generation
PeerJS3,9kLowNode.js/JS
P2P signaling server
OpenFire/XMPP2,7kLowJava
Real time collaboration (RTC) server
SIP.js1,7kLowSIP, JS
WebRTC/SIP signaling library
OpenEasyRTC0,31kFlatNode.js
Rooms, Chat
Protoo-Client (2)0,2kLowNode.js
Minimalist and extensible Node.js signaling framework

即使在 WebRTC 标准化的范围之外,也没有很多专用的信令服务器。这是因为媒体服务器通常自带信令协议或机制。

只有在 WebRTC 初期出现的一些开发者无从下手的参与者,如 SIP.js、Simple-Peer、PeerJS 和 OpenEasyRTC 等,才能生存下来…

与此相反,现有的 “标准化 “协议,如带有 Jingle 的 XMPP 或新协议,如 Matrix,都是将媒体服务器与信令分离的替代方案。

此外,基于 ActivityPub 的去中心化服务器也是处理信令部分的一种新方法。

(1) Simple-Peer 似乎从 2022 年 2 月起就不再活跃, (2) Protoo 似乎从 2021 年 1 月起就不再活跃, (3) 至少有了 XEP-0166 Jingle

类六:其他 WebRTC 库

以下是我为一些用例找到的其他有趣库。

这里没有象限。只是一些很酷的库!

LibrariesStarsGrowthUsage
WebRTC Samples13,1kHighJS
Samples demonstrating WebRTC JS API
RecordRTC (1)6kMediumJS
P2P recording
adapter.js3,5kLowJS
WebRTC Shime library
WebTTY2,6kLowGo
Share a terminal session
GStreamer/webrtcsink/webrtcbin1,8kLowC
pipeline-based multimedia framework
aioquic1,3kMediumQuic/Python
Quic and HTTP/3 protocol library
WebRTC Camera1kHighHome Assistant
Home Assistant custom component for viewing almost any camera stream in real time using WebRTC
WebRTC-CLI0,2kLowGo
WebRTC command-line peer.
PeerMetrics0,05kLowJS
Collect stats for peer connections
WebRTC Issue Detector0,04kLowJS
Diagnostic tool and troubleshooter for WebRTC
WebRTCMetrics0,02kLowJS
Aggregate stats received from the WebRTC stack
Stats Gatherer0,02kLowJS
Collecting stats for webrtc connections

由于我的开发工作,我主要关注Web库,但 WebRTC 在这里有很多用途。

(1) RecordRTC 似乎自 2022 年 4 月起就不活跃了

准备好使用 WebRTC 开源了吗?

如前所述,如果您需要在产品中添加实时交互和视频,WebRTC 开源生态系统和社区非常庞大,应该能满足您的需求。

但是,与其他最新技术一样,WebRTC 也需要一些时间才能达到成熟,因此有大量前景看好的老项目被大量使用,但现在却被其他更受欢迎的项目所抛弃。问题是,一些生产解决方案至今仍在使用它们,需要找到开发人员来重新修改/迁移代码库,使其获得开源支持。

我自己会定期更新这些 WebRTC 开源组件的列表,以便在 2024 年评选出未来的 100 强。

作者:Olivier Anguenot
实时互动网编译自:https://www.webrtc-developers.com/webrtc-top-100-open-source-projects-for-2023/

本文为原创稿件,版权归作者所有,如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/32793.html

(2)

相关推荐

发表回复

登录后才能评论