C# 海康DVR客户端开发系列(3)—— 连接DVR和图像预览

简介:

正文

  一、截图

 

 

二、代码

         #region  Member Variable

        
// 登录标识
         private   int  lUserID  =   - 1 ;
        
// 预览标识
         private   int  lRealHandle  =   - 1 ;

        
#endregion

        
#region  Form

        
public  frmMain()
        {
            InitializeComponent();
        }

        
private   void  frmMain_Load( object  sender, EventArgs e)
        {
            HCNetSDK.NET_DVR_Init();
            HCNetSDK.NET_DVR_SetConnectTime(
5000 1 );
        }

        
private   void  frmMain_FormClosing( object  sender, FormClosingEventArgs e)
        {
            HCNetSDK.NET_DVR_Cleanup();
        }

        
#endregion

        
#region  功能

        
///   <summary>
        
///  登录DVS并预览
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  btnOpen_Click( object  sender, EventArgs e)
        {
            
#region  New V30
            NET_DVR_DEVICEINFO_V30 dev 
=   new  NET_DVR_DEVICEINFO_V30();
            lUserID 
=  HCNetSDK.NET_DVR_Login_V30( " 192.168.1.1 " 8000 " admin " " 12345 " out  dev);
            
if  (lUserID  ==   - 1 )
            {
                MessageBox.Show(
string .Format( " 登录DVS失败,错误码: {0} " , HCNetSDK.NET_DVR_GetLastError()),  " 登录DVS失败 " , MessageBoxButtons.OK, MessageBoxIcon.Error);
                
return ;
            }

            NET_DVR_CLIENTINFO clientinfo 
=   new  NET_DVR_CLIENTINFO();
            clientinfo.hPlayWnd 
=   this .panel1.Handle; // 视频窗口
            clientinfo.lChannel  =   2 //  通道号
            clientinfo.lLinkMode  =   0 ;
            clientinfo.sMultiCastIP 
=   " 234.5.6.7 " ;

            lRealHandle 
=  HCNetSDK.NET_DVR_RealPlay_V30(lUserID,  ref  clientinfo,  null 1 false );
            
if  (lRealHandle  ==   - 1 )
            {
                MessageBox.Show(
string .Format( " 播放失败,错误码: {0} " , HCNetSDK.NET_DVR_GetLastError()));
                
return ;
            }
            
#endregion
            
#region  Old
            
// NET_DVR_DEVICEINFO dev = new NET_DVR_DEVICEINFO();
            
// lUserID = HCNetSDK.NET_DVR_Login("125.119.30.175", 8000, "admin", "12345", out dev);
            
// if (lUserID == -1)
            
// {
            
//     MessageBox.Show(string.Format("登录DVS失败,错误码: {0}", HCNetSDK.NET_DVR_GetLastError()), "登录DVS失败", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
//     return;
            
// }

            
// NET_DVR_CLIENTINFO clientinfo = new NET_DVR_CLIENTINFO();
            
// clientinfo.hPlayWnd = this.panel1.Handle; // 视频窗口
            
// clientinfo.lChannel = 2;  //  通道号
            
// clientinfo.lLinkMode = 0;
            
// clientinfo.sMultiCastIP = "234.5.6.7";

            
// lRealHandle = HCNetSDK.NET_DVR_RealPlay(lUserID, ref clientinfo);
            
// if (lRealHandle == -1)
            
// {
            
//     MessageBox.Show(string.Format("播放失败,错误码: {0}", HCNetSDK.NET_DVR_GetLastError()));
            
//     return;
            
// }
             #endregion
        }

        
///   <summary>
        
///  停止预览并退出登录
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  btnClose_Click( object  sender, EventArgs e)
        {
            HCNetSDK.NET_DVR_StopRealPlay(lRealHandle);

            
#region  New V30
            HCNetSDK.NET_DVR_Logout_V30(lUserID);
            
#endregion
            
#region  Old
            
// 如果不退出登录,下次开启拾音将失效
            
// HCNetSDK.NET_DVR_Logout(lUserID);
             #endregion

            
this .panel1.Invalidate( false );
        }

        
#endregion

    代码说明:

      1.  [#region New]与[#region Old]代码块分别是新旧版本的API,这里均测试通过。

      2.  需要把HCNetSDK.dll(这里事例使用版本为3.0.3.3)直接拷贝到bin\Debug下去,或者拷贝到项目工程根目录下,然后选中右键属性->复制到输出目录 选中始终复活或者如果较新则复制,重新编译即可。

 

  三、提醒

    提醒大家API有变动,请立即更新!

 

  五、后期维护 
 

    1.  2009-11-2

      也需要把PlayCtrl.dll加到的项目中来,否则可能出现登录成功,播放报错,显示错误代码64。


本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586616,如需转载请自行联系原作者

相关文章
|
Linux 数据安全/隐私保护 Windows
音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面
音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面
2742 0
音视频开发:大华摄像头配置RTSP与RTMP地址访问视频画面
|
Web App开发 编解码 安全
在高版本谷歌Chrome浏览器中用VLC播放海康、大华RTSP实时视频完全方案
随着互联网基础设施的完善以及4G、5G等技术的大规模商用,在Chrome、Firefox、Edge等浏览器播放RTSP视频流也慢慢成为了信息化系统的行业标准。早些年还可用VLC播放器在网页中播放RTSP视频流,好景不长,2015年Chrome、Firefox等浏览器取消了对 NPAPI插件的支持,导致在高版本的Chrome等网页中播放海康威视、大华等摄像头RTSP视频流也成了奢望。
2022 0
|
29天前
|
网络协议 Go 网络安全
一种远程升级PLC和HMI组态屏程序的方法-做个笔记
一种远程升级PLC和HMI组态屏程序的方法-做个笔记
25 2
|
2月前
|
Web App开发
web接入海康相机视屏流 注意事项 - 编码H264
web接入海康相机视屏流 注意事项 - 编码H264
23 1
|
5月前
|
Web App开发 监控 JavaScript
WebRTC力量:局域网屏幕监控软件通信代码
在当今数字化社会中,局域网屏幕监控软件的需求日益增长。为了实现这一目标,利用WebRTC技术成为一种常见选择。WebRTC(Web Real-Time Communication)是一项支持浏览器之间实时音频、视频和数据传输的开放标准。本文将深入研究WebRTC的力量,重点关注局域网屏幕监控软件的通信代码。
217 0
|
应用服务中间件 nginx
流媒体技术学习笔记之(十四)FFmpeg进行笔记本摄像头+麦克风实现流媒体直播服务
FFmpeg推送视频流,Nginx RTMP模块转发,VLC播放器播放,实现整个RTMP直播 查看本机电脑的设备 ffmpeg -list_devices true -f dshow -i dummy 红色标记表示视频设备和麦克风设备 看到乱码了吧!来这里查看哦   FFmpeg编码推送到R...
3334 0
|
8月前
|
数据采集 Android开发 开发者
Android平台GB28181设备接入模块摄像头采集方向不对怎么办?
我们在做Android平台GB28181设备接入模块的时候,有开发者提到这样的诉求:他们的智能头盔、执法记录仪等设备,采集到的图像,是旋转了90、180甚至270°的,设备本身无法针对图像做翻转或者旋转操作,问我们这种情况下需要如何处理?
|
Web App开发 数据采集 Shell
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)
|
Web App开发 编解码 中间件
海康威视摄像头RTSP视频流嵌入到谷歌Chrome等WEB页面中实时播放方案(图文教程)
近期在做一个智慧城市项目,要求将海康威视、大华等摄像头RTSP视频流在Chrome、Firefox、Edge等浏览器中播放,并且要求延迟必须要低,能到多低就多低,最好是实时视频。 小编了解很多不同的方案,目前市面上大部分是转码转流方案,不仅需要服务器支持,并且需要服务器不停的转码转流,如果多路同时播放或者播放高清视频,非常容易出现卡顿、花屏等情况,延迟更是高达数秒甚至数分钟,对于一些延迟要求较高的项目来说,这简直是灾难性后果。
2620 0
海康威视摄像头RTSP视频流嵌入到谷歌Chrome等WEB页面中实时播放方案(图文教程)
|
编解码 前端开发 调度
产品百科 |Web 端没有麦克风设备如何推视频流
通过阅读本文,您可以了解到当 Web 端没有麦克风时,设备推视频流的方法。
产品百科 |Web 端没有麦克风设备如何推视频流