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

Video streaming 如何为类似Twitch的应用程序构建WebRTC媒体服务器,video-streaming,streaming,webrtc,live-streaming,kurento,Video Streaming,Streaming,Webrtc,Live Streaming,Kurento,我正在尝试构建一个类似twitch的应用程序(即多对多实时视频流)。我想使用WebRTC,因为我想让应用程序可以从所有平台访问(我计划使用Nativescript或PWA road)。我的计划是将摄像头从person A传输到媒体服务器。将WebRTC流以多种质量等进行转码,并将其发送给所有订阅的用户,这些用户也可以播放WebRTC流。在理想情况下,将有数千条拖缆,每个拖缆都有数千个实时订户 然而,如何做到这一点?我需要某种媒体服务器,它将负责接收流,对其进行转码并转发。MVP将只是转发流,而不

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

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

我是不是应该买一些像Kurento,Jitsi之类的东西?或者我可以自己构建这个服务器吗

这种架构是个好主意,还是我应该重新思考一切?我之所以不选择RTMP或类似产品,是因为在为本机应用程序(iOS、Android、任何ol’浏览器)开发不同的客户端代码时需要投入大量的代码和工作。如果我可以使用WebRTC,这将使客户端代码更容易,并使应用程序在所有平台上都可以访问


提前多谢

这是一个雄心勃勃的项目,会很复杂

首先: 如果您计划编写大型应用程序,那么媒体服务器是一个不错的选择(甚至是必要的)。无论是转录还是让发送者发送多个视频流质量,都会改善用户体验

现在转到媒体服务器: 您只对转发媒体、基于ergo sfu或类似服务器感兴趣。 Jitsi和Kurento都可以做到这一点(但Kurento通常被关联为混合服务器)。 我不能给你建议使用哪一种,因为我没有足够的经验

SFU方法可以很好地扩展,可能足以满足您的应用程序,但对于像twitch这样的大规模服务,您还可以看看CDN支持的技术。传统上,这是DASH或HLS。两者都会增加延迟,但由于您没有两个或多个用户实时交谈,而只有一个人在广播,这可能是可以容忍的

我自己也研究过这个问题,发现了一些相关的东西,可能会对你有所帮助。 基本思想是通过webrtc将视频发送到服务器(低延迟,但在达到sfu限制时不一定能很好地扩展),然后为DASH(或更优化的CMAF)编码视频。然后,您的内容可以通过CDN提供服务,这可能允许您扩大服务规模

但为什么不看看twitch对自己的评价呢?这里有一篇文章,他们列出了自己的服务,并简要介绍了它们的工作原理:

这个问题太宽泛了。请选择一个区域并寻求帮助。我甚至不知道从哪里开始。例如,您是否认为使用WebRTC意味着您不能使用CDN,这意味着WebRTC在带宽方面的成本高于DASH或HLS?您打算如何对每个用户进行转码?还是自适应格式副本?前者非常昂贵,后者则需要您自己编写所有代码。