【问题标题】:How to stream different videos to the same RTMP URL?如何将不同的视频流式传输到同一个 RTMP URL?
【发布时间】:2013-01-23 20:57:45
【问题描述】:

我正在尝试使用 Red5 作为服务器并使用 Flash 和 Adob​​e Air 作为客户端来开发视频会议应用程序。在学习了如何使用 Flex 创建一个简单的视频聊天应用程序之后,我很困惑我们如何将会议中许多人的视频流式传输到同一个 rtmp url? 我的 rtmp 网址是:rtmp://localhost/MyFirstRed5Server

现在我无法理解这里的逻辑。我需要为不同的用户使用不同的 URL,或者我可以将所有用户的视频流式传输到同一个 rtmp url?我是初学者,所以请不要介意我的问题和我的英语中的歧义。我只是需要一些提醒。任何帮助将不胜感激。

【问题讨论】:

  • 我从来没有使用过 RED5,但是使用 Adob​​e FMS rtmp(或 rtmfp)url 只需要连接 NetConnection 对象。您可以使用 NetStream 的发布方法创建流,并为其指定流名称。知道其名称的其他人可以播放该流。

标签: flash apache-flex red5 rtmp live-streaming


【解决方案1】:

不,

每个用户都将连接到相同的 rtmp-url。 但是,当您加载视频时,您会连接到另一个 NetStream。

因此,NetConnection 可以在所有 NetStream 之间共享,当然视频聊天中的每个客户端都有自己的流。

您只需要确保发送者和接收者知道流的名称,可能您通过 RTMP 或通过 SharedObject 发送有关流名称的消息。 当有人开始在 Red5/Server-Side 上流式传输时,您可以捕捉到该事件。因此,客户端实际上不需要主动创建消息并预先发送一些东西。您可以在服务器端监听该事件,然后同步到所有客户端(正在广播的客户端除外)。

塞巴斯蒂安

【讨论】:

  • 感谢塞巴斯蒂安的回答。我已经为每个客户端使用了 SharedObjects 来向服务器询问其唯一 ID,该 ID 也将是流名称。当有新客户端加入会议时,服务器会给它一个新的 id,并将该 id 发送给所有连接的客户端。这是正确的方法吗?还有一件事,我应该为基于 java 的客户端做些什么?我无法使用流名称发布或访问,因为我只能访问顶级 url 流: rtmp://[host]/myserver 。有什么办法可以将流解析为 rtmp url?
  • 你可以试试 RTMPClient.java 类。但是我们只使用它来发布,而不是接收流。我不会为每个客户端制作一个固定的 ID,因为客户端可以发布多个流(或在更改设置后重新发布)。此外,您仍然需要等待每个客户端,直到流媒体真正开始。所以我会覆盖ApplicationAdapter中的“streamPublishStart”方法来监听流启动事件,并用它来通知所有客户端有一个新的流。不仅仅是“当新客户加入房间时”。因为新客户可以加入房间,但这并不意味着他会广播任何内容
  • 谢谢塞巴斯蒂安,您提到这些小而重要的信息,节省了我很多时间。当客户加入房间时,我正在通知客户,并在思考为什么视频没有更新......再次感谢。如果您了解 flex sdk,您知道如何在点击客户的视频时使其全屏显示吗?
  • 全屏是 flash 有点奇怪。问题是当您全屏时唯一可以使用的按钮是“esc”按钮(离开全屏)。原因是否则有人可能会在视图前放置一个看起来像您的网上银行网站的全屏,并窃取您的用户/密码。但是,如果您仍然觉得它对您有意义,那么在 www ... 或开始一个新线程中有很多示例说明如何做到这一点。基本上你需要在 SWF 的 HTML 嵌入代码中添加一些属性,然后你可以运行一些 as3 sn-p 来全屏
猜你喜欢
  • 1970-01-01
  • 2014-01-19
  • 2019-10-07
  • 2011-03-23
  • 2020-10-27
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
  • 1970-01-01
相关资源
最近更新 更多