发送RTSP身份验证C#

时间:2020-09-07 03:48:29

标签: c# authentication uri rtsp

我只是试图用C#(Windows窗体)编写一个程序来播放从获得的受密码保护的URI播放的视频。该程序的重​​点是使用SOAP和其他方式定位URI,以便流式传输特定的视频供稿。我不知道该项目最困难的部分只是播放视频。我认为那里必须有可以处理此问题的库。尽管有很多可以播放视频的视频,但我仍在努力寻找如何通过身份验证处理RTSP流的方法。

尝试使用UserName和Password格式化URI对象。这将引发严重的格式化错误。即使最终结果遵循Wiki“ IsWellFormedUriString”的良好格式,仍会引发错误。

        local_uri.Host = deviceUri.Host;
        local_uri.Port = 554;
        local_uri.Scheme = "rtsp";
        local_uri.Password = "admin";
        local_uri.UserName = "admin";
        //List full URI info. 
        infoBox.Text = local_uri.ToString();

        //Past it to VideoView and start playing video. 
        bool check = Uri.IsWellFormedUriString(local_uri.Uri.ToString(), UriKind.RelativeOrAbsolute);
        bool check = true;

        if (check)
        {
            //_mp is of type LibVlcSharp.Shared.MediaPlayer
            _mp.Play(new Media(_libVLC, local_uri.Uri));
            check = false;
        }
        else
            check = false; 

我已经厌倦了VLC库的折旧版本,但似乎遇到了同样的问题。浏览了C#VLC lib,没有找到任何明显可以处理授权的函数。然后,我开始尝试编写代码来处理,缓冲和播放数据。我认为这将是多么费时的问题,并且鉴于此作业的时间限制。

我知道我取回的URI是有效的。我可以打开VLC和整个URI。片刻之后,弹出以下内容... enter image description here

输入后,我会看到发送到URL的RTSP包...

 DESCRIBE rtsp://192.168.1.64:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1 RTSP/1.0
    CSeq: 7
    Authorization: Digest username="admin", realm="IP Camera(C6990)", nonce="61218496a6adcf4869f748505626d63a", uri="rtsp://192.168.1.64:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1", response="3cce04175b5b1a3d0a6a8dcfea9d377a"
    User-Agent: LibVLC/3.0.11 (LIVE555 Streaming Media v2016.11.28)
    Accept: application/sdp

然后,URL当然会以200 Ok响应并开始流式传输。如果我能弄清楚如何在C#中重新创建此事件,那就太好了。我对使用Dialog API提出了建议,但无法弄清楚如何使用VLC对象解决该问题。任何方向将不胜感激。后见之明,我不应该选择其他项目,因为它与我的年级相关。

1 个答案:

答案 0 :(得分:0)

事实证明(而且我不完全确定为什么),但是只要您的密码不包含任何会导致字符串格式错误的内容,上面的代码就可以工作。例如,密码不能包含上面代码的“ @”符号。我敢肯定有一个解决方法,但是还没有弄清楚它是什么。