将RTSP流转换为HTTP流

4
在C#中,是否有可能使用“System.net.httpwebrequest”来使用RTSP视频流?如果不行,请告诉我另一个替代方案。 //从中下载文件的URL
        string basepath = @"rtsp://ip.worldonetv.com:1935/live/ ";

        // the path to write the file to

        //            string sFilePathToWriteFileTo = "d:\\Download";



        // first, we need to get the exact size (in bytes) of the file we are downloading

        Uri url = new Uri(basepath);

        System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);

        System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();

        response.Close();

1
已经过了很长时间,但我仍然遇到完全相同的问题,甚至是相同的代码。我对IP摄像头还很陌生,解决方案对我来说并不那么容易和清晰,所以我想知道你是如何处理这个问题的?我仍在努力尝试和搜索关于RTSP的信息:( - CanESER
2个回答

1
你可以使用我的库来制定RtspRequests。
然后,你可以对RtspRequest进行base64编码,并将其作为HttpRequest的主体。
添加一个名为content-length的头部,该头部的值应等于主体中base64编码的rtsp请求的长度。
在HttpRequest中添加头部rtsp/x-tunneled,然后发送它。
你应该会收到一个包含base64编码的RtspResponse的HttpResponse。
对HttpResponse的主体进行base64解码,然后使用我的库中的RtspResponse类进行解析。
该库的.net core版本位于https://github.com/juliusfriedman/net7mma_core
还有一篇关于此的CodeProject文章,链接为http://www.codeproject.com/Articles/507218/Managed-Media-Aggregation-using-Rtsp-and-Rtp
如果你需要其他任何帮助,请告诉我!

最新链接已更新 - Jay

0

目前没有标准的C#库可以实现这个功能。即使使用各种.NET DirectShow包装器也无法实现。我曾经有一个同事花了一个月的时间来解决这个问题,最终他编写了自己的C#包装器基于GStreamer。如果你打算显示视频,最简单的选择是嵌入VLC ActiveX控件。


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