使用 C# 将视频流式传输到基于 RTMP 的媒体服务器 (Red5)

本文关键字:媒体 RTMP 服务器 Red5 视频 传输 使用 | 更新日期: 2023-09-27 18:30:25

我正在编写一个基于 C#.Net 的应用程序,该应用程序需要将视频和音频流发布到 Red 5 媒体服务器,并在本地网络上的另一个应用程序中检索相同的已发布流,稍后在 Internet 上检索。

简而言之,我打算使用 Red5 作为在两个客户端之间传输视频和音频数据的中间或代理。

[客户端 1] <-视频和音频 -

> <- 视频和音频 -> [客户端 2]

我正在寻找RTMP协议的.NET实现(库),它可以帮助我将流发布到媒体服务器并重新发布流并在我的应用程序上播放。

我搜索了 SOF 并找到了以下选项:

  • 博罗科利RTMP客户端库
  • FlourineFx.NET
  • WebORb.Net

每个都有一些限制。

  1. Borrocoli RTMP库仅支持音频/视频流,但没有将视频/音频流发布到媒体服务器的选项。我玩过图书馆并看到了它的例子,但无济于事。如果我错了,请纠正我。

  2. FlourinFx.Net 表示支持NetStream.Publish(),NetStream.AttachAudio()和NetStream.AttachVideo()方法。但是在最新的代码快照中,没有这样的东西。他们的生产版本也是如此。NetStream 类没有规定的方法和/或没有任何方法可以帮助将流内容发布到媒体服务器。

  3. WebOrb.Net:我还没有探索过它,但从他们的许可页面可以明显看出,免费版本仅适用于 IIS。企业版似乎具有发布流媒体视频的所有支持......

问题:

  1. 是否可以将 WebOrb.Net 库与 Red5 媒体服务器结合使用?
  2. 免费版本是否允许我将音频和视频发布到 Red5 媒体服务器?
  3. 如果上述问题无效,我可以使用其他免费替代方案吗?

使用 C# 将视频流式传输到基于 RTMP 的媒体服务器 (Red5)

您可以使用 ffmpeg 将流发送到 Red 5 MediaServer。将源视频设置为 ffmpeg,将输出设置为 red5 的 rtmp,如下所示:

ffmpeg -re -i file.mp4 -c copy -f flv rtmp://server/live/streamName

有关在 c# 中集成 ffmpeg 的示例,请参阅此答案。

您可以通过 RTMP 协议使用 Flex 和 .NET 将 weborb.lib 用于点对点视频流。您可以用于点对点流。您的过程可以通过以下方式完成...1.开发连接到服务器的 Flex 客户端代码,并订阅以接收带有 CPU 读数的服务器端更新。该代码还包括一个图表,用于可视化接收到的数据。2.服务器端"应用程序处理程序"插入WebORB,轮询CPU并将数据交付给客户端。它会工作尝试一下。

使用 RTMPdump 的 librtmp。它是用 C 编写的,但您应该能够轻松地为其编写 C# 包装器。