gpt4 book ai didi

video-streaming - 如何为类似 Twitch 的应用程序构建 WebRTC 媒体服务器

转载 作者:行者123 更新时间:2023-12-03 17:27:55 26 4
gpt4 key购买 nike

我正在尝试构建一个像 twitch 这样的应用程序(即多对多实时视频流)。我想使用 WebRTC,因为我想让应用程序可以从所有平台访问(我打算使用 Nativescript 或 PWA 道路)。我的计划是将摄像机从人 A 流式传输到媒体服务器。以多种质量等方式对 WebRTC 流进行转码,并将其发送给所有订阅用户,这些用户也可以播放 WebRTC 流。在理想情况下,将有数千个主播,每个主播都有数千个实时订阅者。

然而,如何做到这一点呢?我需要某种媒体服务器,它负责接收流、转码并转发它。 MVP 将只是转发流,而不对其进行转码,但是,将来应该可以添加该优化。

我应该去买 Kurento、Jitsi 之类的东西吗?或者我自己搭建这个服务器可行吗?

这种架构是一个好主意,还是我应该重新考虑一切?我不去使用 RTMP 或类似的东西的原因是因为必须投入大量的代码和工作来为 native 应用程序(iOS、Android、任何浏览器)开发不同的客户端代码。如果我可以使用 WebRTC,这将使客户端代码更容易,并使应用程序可在所有平台上访问。

非常感谢!

最佳答案

一个雄心勃勃的项目,它会很复杂
首先:
如果您计划编写大型应用程序,媒体服务器是一个不错的(甚至是必要的)选择。转录或让发件人发送多个视频流质量将改善您的用户体验。
现在到媒体服务器:
您只对转发媒体、基于 ergo sfu 或类似服务器感兴趣。
Jitsi 和 Kurento 都可以做到这一点(但 Kurento 更常被关联为混合服务器)。
由于我对它们没有足够的经验,我无法就使用它们中的哪一个给您建议。
SFU 方法扩展性很好,可能足以满足您的应用程序,但对于像 twitch 这样的大规模服务,您还可以查看 CDN 支持的技术。通常,这是 DASH 或 HLS。两者都会增加延迟,但由于您没有两个或多个用户实时相互交谈,而只有一个人广播,这可能是可以容忍的。
我自己研究过这个问题,发现了一些相关的 here这可能对你有帮助。
基本思想是通过 webrtc 将视频发送到服务器(低延迟但当您达到 sfu 的限制时不一定能很好地扩展),然后为 DASH(或更优化的 CMAF)编码视频。然后,您的内容可以由 CDN 提供服务,这可以让您扩展服务。
但是为什么不看看 Twitch 对自己的评价呢?这是一篇文章,他们列出了他们的服务并简要介绍了他们的工作方式:
twitch engineering - an introduction and overview

关于video-streaming - 如何为类似 Twitch 的应用程序构建 WebRTC 媒体服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58844937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com