首页 > 解决方案 > 流媒体服务如何运作?

问题描述

我正在开发屏幕共享应用程序。目前它的工作方式如下:c++ 应用程序从屏幕上抓取屏幕截图,压缩它们并通过 TCP 发送到服务器(写在 node.js 上)。客户端(希望查看共享数据的人)将链接粘贴到浏览器中并连接到服务器。然后服务器向客户端广播数据。问题在于,当我需要大约 1000-1500 个客户端时,服务器可以同时处理大约 10-15 个客户端。

我知道流媒体平台(如 twitch 或 youtube)可以处理多达 1000000 个(甚至更多)的连接。我想知道他们是怎么做的。更具体地说:1)最适合用于共享数据->服务器和服务器->浏览器客户端传输的协议;2) 实现它的任何其他提示和技巧(代码示例、文章等)。

标签: video-streamingstreamingwebrtcrtp

解决方案


如果您想要从客户端到服务器的实时数据(数据 -> 服务器),建议您可以通过 udp/tcp 实现 rtp 或通过 udp/tcp 实现 mpeg2ts。

对于支持向多个客户端(服务器->浏览器)广播数据的服务器,建议您实现 MPEG DASH/HLS 流(Nginx,Appache - HTTP 服务器)。

MPEG DASH/HLS - 支持基于可用带宽的媒体数据流。大多数浏览器通过 javascript 播放器支持 MPEG DASH/HLS 流。

有许多可用的开源解决方案。


推荐阅读