博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C# 海康DVR客户端开发系列(3)—— 连接DVR和图像预览
阅读量:7091 次
发布时间:2019-06-28

本文共 2897 字,大约阅读时间需要 9 分钟。

一、截图

   

二、代码

        
#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。

本文转自博客园农民伯伯的博客,原文链接:,如需转载请自行联系原博主。

你可能感兴趣的文章
优秀的 Spring Cloud 开源软件
查看>>
mysql数据库的简单语句的介绍(1)
查看>>
HDU 2829 Lawrence (斜率DP)
查看>>
visual studio 2012 update3
查看>>
特征值和特征向量的几何意义、计算及其性质
查看>>
Spring framework3.2整合hibernate4.1报错:No Session found for current thread
查看>>
zqgame《每日一言》
查看>>
前端与后端分离的架构实例(一)
查看>>
LoadRunner性能分析指标解释
查看>>
OC语言类的本质和分类
查看>>
如何实现phpcms v9_4X版本tag的伪静态?
查看>>
w3c标准的selection对象介绍
查看>>
Python-类属性与对象属性之间的关系
查看>>
JavaScript 函数参数传递到底是值传递还是引用传递
查看>>
LeetCode:105_Construct Binary Tree from Preorder and Inorder Traversal | 根据前序和中序遍历构建二叉树 | Medium...
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
转 用 Chrome 运行Android应用
查看>>
编程心得--不积跬步无以至千里
查看>>
thinkphp学习笔记8—命名空间
查看>>
在项目中几个需要学习的知识
查看>>