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

14

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

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

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

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

我在SOF上搜索了一下,发现了以下选项:

  • Borrocoli RTMP客户端库
  • FlourineFx.NET
  • WebORb.Net

每个都有一些限制。

  1. Borrocoli RTMP Library仅支持对音频/视频流进行回放,但没有将视频/音频流发布到媒体服务器的选项。我已经尝试过该库并查看了其示例,但未成功。如果我错了,请纠正我。

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

  3. WebOrb.Net:我还没有探索过它,但从其许可页面的表现来看,免费版本仅适用于IIS。企业版似乎具有所有支持发布流媒体视频的功能...

问题:

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

不,: \。就像我说的那样,据我所知,除了Webordb.Net之外,没有任何可用的库提供“服务器”或“流式传输到服务器”的功能。FlourineFX最新的SVN有一些代码看起来可以完成这个任务...但可能需要进行大量的重构才能完成,它没有任何现成的东西可以完成。而且使用AMF0来完成这个任务似乎是很多工作...如果你找到任何免费并提供“从客户端应用程序向服务器流式传输”的API,请告诉我。谢谢 - Steve Johnson
我曾经浏览过所有这些。西兰花和氟在我的潜在选择列表中。最终似乎没有什么特别有用的东西。我最终改变了我的技术方向,完全避开了这条路。我知道这不是世界上最好的建议,但你正在走一条漫长而艰难的道路。 - Gandalf458
在将视频完全流式传输到服务器之前,您是否需要使流式传输的视频在客户端2上可供流式传输? - Rip-Off
是的。实际上我需要一个点对点视频功能。不过,如果需要流媒体服务器,比如RED5或FMS,我也可以利用它们! - Steve Johnson
3个回答

2
您可以使用ffmpeg将流发送到Red 5 MediaServer。将源视频设置为ffmpeg,输出设置为red5的rtmp,类似于以下内容:
ffmpeg -re -i file.mp4 -c copy -f flv rtmp://server/live/streamName

请参考这个答案,以获取在C#中集成FFmpeg的示例。


1
这个答案不够详细,请更新它以包含相关信息。 - Chris

0

你可以使用weborb.lib通过Flex和.NET使用RTMP协议进行点对点视频流传输。你可以用它来进行点对点流传输。你的过程可以按照以下步骤完成: 1. 开发一个Flex客户端代码,连接到服务器并订阅接收服务器端的CPU读数更新。代码还包括一个图表来可视化接收到的数据。 2. 服务器端的'Application handler'插件将连接到WebORB,轮询CPU并将数据传递给客户端。试试看,它会起作用的。


0

使用RTMPdump的librtmp。它是用C语言编写的,但你应该能够轻松地编写C#封装。


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