OpenCVsharp读取大华网络摄像头(rtsp)

一、准备

       Nuget安装Opencvsharp,注意要同时安装Opencvsharp4.runtime.win,不然程序会报错

二、读取写入代码

      每个相机的rtsp格式不一样,大华的是rtsp://账号:密码@IP:端口/cam/realmonitor?channel=通道号&subtype=0(1是辅码流)

 using (var capture = new VideoCapture(rtspStr))
 using (var writer = new VideoWriter("output.avi", VideoWriter.FourCC(@"XVID"), capture.Fps, new OpenCvSharp.Size(capture.FrameWidth, capture.FrameHeight)))
 {
     if (!capture.IsOpened())
     {
         Console.WriteLine("Unable to connect to the network camera");
         return;
     }

     if (!writer.IsOpened())
     {
         Console.WriteLine("Unable to open writer");
         return;
     }

     using (var window = new Window("video"))
     {
         Mat frame = new Mat();
         while (true)
         {
             capture.Read(frame);
             if (frame.Empty())
                 break;

             writer.Write(frame);                       
             window.ShowImage(frame);

             if (Cv2.WaitKey(30) >= 0)
                 break;
         }
     }
 }

三、注意点

       3.1 VideoWriter不能直接修改视频码率,码率影响因素:视频的长宽,帧率大小、编码格式(例子是XVID)

       3.2 码率格式设置异常时,可能会在new VideoWriter这句报错,也可能会导致VideoCapture.Isopened()返回false(完全不能理解这个逻辑)

       3.3 网络摄像头提供的视频码率太高的时候,视频会掉帧

### 大华网络摄像头 RTSP 配置与使用 #### 1. 获取 RTSP 地址 为了使大华网络摄像机通过 RTSP 协议传输视频流,在设备设置界面找到并启用 RTSP 功能。通常情况下,默认的 RTSP URL 格式如下: `rtsp://用户名:密码@IP地址/Streaming/channels/[通道号]` 例如,如果 IP 是 `192.168.0.100`, 用户名为 admin, 密码为 password,则访问第一个主码流可以这样写: `rtsp://admin:password@192.168.0.100/Streaming/channels/101`[^1] #### 2. 测试 RTSP 连接 可以通过 VLC 或其他支持 RTSP 的播放器来测试连接是否正常工作。只需打开媒体播放器并将上述构建好的 RTSP URL 输入到相应的字段中即可。 #### 3. Web 页面集成 为了让基于浏览器的应用程序能够显示来自大华相机的画面而无需安装额外插件,可采用 HTML5 `<video>`标签配合 JavaScript 来加载 RTSP 流。然而需要注意的是,由于大多数现代浏览器不再直接支持 RTSP 协议,因此可能需要借助第三方库如 Hikvision 提供的 SDK 或者开源项目 (比如 ffmpeg.js)RTSP 转换成适合 web 使用的形式,如 HLS(HTTP Live Streaming)[^2]. ```html <video id="camera-stream" controls autoplay> <!-- 注意这里实际应用时应替换为你自己的转码后的URL --> <source src="http://example.com/hls/stream.m3u8" type="application/x-mpegURL"> </video> <script> // 假设已经有一个服务端处理好RTSP流转HLS的过程... document.getElementById('camera-stream').play(); </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值