小编Ale*_*lli的帖子

在 ASP.NET Core 中将 RTSP 流从 IP 摄像机转发到浏览器

我有一个 Blazor 托管应用程序,我需要根据客户请求从 AXIS 摄像机获取 h264 录制内容(通过 RTSP PLAY 命令)并以浏览器可以重现视频的方式返回它。如果向 AXIS 摄像机查询录音列表,答案包括这个,即我尝试在浏览器上播放的那个

    <recording diskid="SD_DISK" recordingid="20211109_122753_1AB3_B8A44F2D0300" starttime="2021-11-09T11:27:53.060281Z" starttimelocal="2021-11-09T12:27:53.060281+01:00" stoptime="2021-11-09T11:43:01.125987Z" stoptimelocal="2021-11-09T12:43:01.125987+01:00" recordingtype="continuous" eventid="continuous" eventtrigger="continuous" recordingstatus="completed" source="1" locked="No">
        <video mimetype="video/x-h264" width="800" height="600" framerate="15:1" resolution="800x600"/>
    </recording>
Run Code Online (Sandbox Code Playgroud)

我可以通过“开放网络流...”并输入来成功地使用 VLC 重现录音

rtsp://192.168.0.125/axis-media/media.amp?recordingid=20211109_140710_E1A3_B8A44F2D0300
Run Code Online (Sandbox Code Playgroud)

然后提供用户名和密码,所以我确信命令是正确的。通过在 url 中嵌入用户名和密码,也可以在项目中播放录音,其中使用了我下面使用的更简单的语法,因此我的示例可能有点过于复杂。

服务器端由于RtspClientSharp ,我可以成功检索流,但我无法以正确的方式返回它。到目前为止我有这个:

[HttpGet("RecordingsDemo")]
    public async Task<IActionResult> RecordingsDemo() {
        string deviceIp = "rtsp://192.168.0.125";
        string recordingUri = "rtsp://192.168.0.125/axis-media/media.amp?recordingid=20211109_140710_E1A3_B8A44F2D0300";
        Uri playRequestUri = new Uri(recordingUri);

        CancellationTokenSource cts = new CancellationTokenSource();
        NetworkCredential networkCredential = new NetworkCredential("user", "password");
        ConnectionParameters connectionParameters = new ConnectionParameters(new Uri(deviceIp), …
Run Code Online (Sandbox Code Playgroud)

c# rtsp ip-camera asp.net-core blazor

5
推荐指数
1
解决办法
1万
查看次数

标签 统计

asp.net-core ×1

blazor ×1

c# ×1

ip-camera ×1

rtsp ×1