在.NET平台上创建RTSP视频流

时间:2011-01-14 19:12:36

标签: .net vb.net streaming ffmpeg rtsp

我想从静态图像创建RTSP / h264视频流,并将其合并到我的.NET应用程序中。到目前为止,我已经找到了两种可行的方法:

  1. 使用ffmpeg / ffserver,但是我需要在windows上编译ffserver然后依赖它...而且我不一定要依赖外部应用程序

  2. 使用LIVE555(http://www.live555.com)库,但它们没有任何.NET库,所以我需要花一些力气才能让它与我的其余部分一起工作。 NET应用程序。

  3. 你能评论#1,#2,哪个更好。是否有更快的方式在.NET中启动RTSP服务器?如果有一个需要时间的可靠解决方案,我不介意投入开发时间,但是有一些我们可以快速处理,原型设计和演示的东西会很好。

    谢谢,

4 个答案:

答案 0 :(得分:1)

这是否需要动态完成,或者您是否可以上传图像,然后创建视频然后只提供h264视频流?我只需从代码中的命令行调用FFMpeg并输出视频并跳过RTSP(如果可以)。如果你使用qt-faststart,你也可以获得可搜索的流,而不需要先下载整个MP4。

答案 1 :(得分:1)

1您可以使用已编译的ffmpeg / ffserver for Windows。只需谷歌它,你就可以找到很多适用于Windows的预编译库。

2对于live555,您可以在VC6,YS2003或VS2008中构建库。请参阅如何在Window s上配置和构建代码。编译它非常简单,只需1小时的工作。

*这些库是用C / C ++(非托管代码)编写的,可以在托管代码中使用这些库,您可能需要进行编组或编写某种接口。

答案 2 :(得分:1)

h264转码部分将是困难的部分。 X264 for .Net的包装器不多。

在您有一种方法对您的数据进行编码后,必须将数据打包以使其在Rtp上运行,这是Rtsp用于将媒体发送到每个客户端的。这意味着将数据以正确的方式放入RtpPackets,在这种情况下由RFC确定http://tools.ietf.org/html/rfc6184

我在c#中有一个RtspClient和RtspServer,它可以为你提供单个数据包,这样你就可以将它们送到解码器。

这里还有一个代码项目文章 http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp

VLC是另一种选择,因为它可以进行转码并为您提供Rtsp流,供客户同时使用。

查看VLC文档http://www.videolan.org/doc/streaming-howto/en/ch05.html

如果您还需要其他信息,请告诉我们!

答案 3 :(得分:0)

虽然这不是一个永久的解决方案,但到目前为止,最简单的方法是使用.net Process库将vlc嵌入到程序中:

Dim p As New ProcessStartInfo
p.FileName = "vlc"  'Assuming vlc.exe is already in the path variable
p.Arguments = "vlc CLI options for setting up the stream"
p.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(p)