如何在Red5中处理多个视频流?

10

我正在编写一个Red5应用程序,为Flash客户端提供1对1视频聊天功能,通过RTMP实现。

不幸的是,我能找到的大多数教程都很简略,而且Red5本身的文档在API概念和预期使用方面往往缺乏明确的说明。

总之,我有点卡住了,正在寻找关于Red5 ApplicationAdapter实现的提示。具体细节如下:

  • 首先,连接分为两种类型:访客和咨询师。访客应该能够指定它想与哪位咨询师交流。只要咨询师没有忙于为其他人服务,就会被连接到请求访客。

  • 显然,每个RTMP连接都有来回交通:即发送和接收视频。从服务器的角度来看,连接会带来一堆视频流,这些流会通过请求分配其接收端点。

  • 由于可能同时进行多个视频对话,应用程序的主要任务是处理访客流到咨询师的映射,并提供一个列表,指示每位咨询师的状态(繁忙/可用),通过AMF实现。

因此,总体而言,我对我的目标有很好的想法,但如何使用Red5实现它仍然有点神秘。

希望有人可以在以下任何或所有方面启示我:

  1. 建立连接类型(访客/咨询师)的最简单方法是什么?

  2. 应该使用哪些API类来实现一个持久的、全局可访问的活动连接列表,以报告每个咨询师的状态?

  3. 当目标是将特定访客连接到所选咨询师时,如何动态切换接收端点?


这些人似乎已经写了一些类似的东西并进行了文档化:http://www.red5chat.com/features-webcamchat.htm - blueberryfields
@blueberryfields - red5chat已经超过2年没有更新了,根据其sourceforge页面上的评论,文档很糟糕,而且源代码也不完整。 - SEK
2个回答

3

Saul ,

1.如何最简单地确定连接类型(访客/顾问)?

假设两者(访客/顾问)都使用Flex客户端来开始发布他们的实时视频流,您需要确保每个发布的视频流名称是唯一的(如何设置已在演示应用程序中提到)。

2.哪些API类应该用于实现一个持久的、全球可访问的活动连接列表以报告每个顾问的状态?

为了提供活动连接列表,您只需要存储(最好存储在您的数据库中)每个用户的ID和流名称(也可以在教程演示应用程序中找到)。

我相信所有的代码都可以在Red5演示中找到。请尝试oflaDemo、simpleSubscriber、fitcDemo演示应用程序。

希望我的回答对您有所帮助。


0

由于Oflademo或red5能够进行1v1聊天,因此可以复制此代码以进行约50个聊天。您可以维护一个具有以下列的表:

  • 聊天室编号(1至50)
  • 用户1
  • 用户2
  • 状态(0或1-未占用或已占用)

如果访问者V22想要从顾问C33那里获得咨询,则程序可以检测从1到50的第一个未占用的房间,如果第7个房间未被占用,则将V22和C33重定向到第7个房间并更改状态为1(已占用)。视频通话结束后,状态可以重置为0,并且房间号为7的表格,房间号为7的用户1,房间号为7的用户2可以设置为NULL。就像在计算机中维护餐厅中的桌子一样。

您可以基本上使用数据库和php查询开发多个1to1聊天,无需编辑任何swf代码或维护复杂的服务器等。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接