【问题标题】:Single Realtime Resource, Multiple Client Connections单一实时资源,多个客户端连接
【发布时间】:2012-08-16 16:12:12
【问题描述】:

我正在从事一个个人项目以进一步接受我自己的教育。

我想了解流媒体服务器通常使用什么模型在连接到单个共享资源但将其发送到多个资源时在有限资源上实现最大性能。

例如:假设我们有一个具有固定带宽 (1 mb/s) 的网络摄像头。这个网络摄像头的观众数量不定。如果相机可以产生使其上游能力饱和的高质量视频,我们将被限制为 1 个连接。但是我们想要满足所有这些连接请求。所以我们在两者之间放置了一个流媒体服务器。

他们通常使用什么方法来多流此单个会话?我一直在研究共享内存、消息队列。

我已经使用二进制发布-订阅消息队列成功编写了一个简单的多连接服务器,但我正在寻找其他解决方案来解决这个问题。不是因为它不起作用,而是因为我想知道其他人是如何做到的。

我的问题是,流媒体服务器(FFServer、Red5、WMS、FMS 等)用于连接单个实时资源并将其联合到多个客户端的典型编程方法是什么。

这与语言无关,我对概念比对实现更感兴趣。

【问题讨论】:

    标签: video-streaming messaging shared-memory live-streaming


    【解决方案1】:

    Adobe Flash 使用一种 P2P 技术。您可以在使用 CNN 网站的直播时观看。观看一段时间后,您可以看到上游和下游相同。 您的任务管理器中还有一个名为“omnixyz-something”的新进程。此过程管理您的流向其他观众的 P2P 转发。 你可以看到一些关于这里涉及的概念的漂亮图形: http://labs.adobe.com/technologies/cirrus/ 虽然我有点怀疑当前 Adob​​e 的 RTMFP 是否像第二张图显示的那样灵活。该图很好,但从技术上讲,我认为单个查看器在“播种者”网络中连接的节点数量是有限的。因此,您只能将您的信息流转发给 1、2、3 人,而不是如图所示的“无限”。

    【讨论】:

    • 感谢 Seba,但我正在尝试找出编程设计模式。他们是使用带有信号量、互斥体和锁的共享内存来实现这一点,还是使用消息队列或完全不同的东西?
    • 对不起,我认为您的问题过于笼统,无法用任何具体方法回答。例如 Red5 使用 Apache Mina 对数据包进行排队。 Mina 基本上提供了一个框架来编程协议并将它们拆分为编码器和解码器。
    猜你喜欢
    • 2013-09-26
    • 1970-01-01
    • 2023-01-29
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    相关资源
    最近更新 更多