大约十年前用过海康的硬盘录像机和SDK进行过二次开发,多年不用了,现在市场变化很大。近几年网络摄像头大量出现,如海尔、小米等品牌。相比早期海康、大华的监控摄像头,这些网络摄像头使用简单、方便,不需要单独的录像机,可通过手机远程观看和云台控制。但他们没有提供开发包,想要二次开发的用户还是要选择海康和大华。他们也推出了支持网络的录像机和摄像头。如海康有支持萤石云的录像机,支持普通模拟输入、网络输入摄像头,可通过手机或电脑观看。还有支持网络和云台的萤石摄像头,支持智能跟踪和听声辨位,可通过手机远程观看和云台控制。大华有支持网络和云台的乐橙摄像头。
我们以海康录像机NVR DS-7804为例,接入模拟摄像头进行开发。主要包括以下内容:

1.硬件准备

先安装录像机硬盘,若不安装,录像机会一直报警。然后将摄像头与录像机连接,并连接摄像头和录像机电源。接上录像机电源后,录像机会自动开机,开机过程可设置用户密码,该密码在使用录像机SDK时需要使用。该录像机默认支持4路模拟输入和1路网络输入,可设置将其中的模拟输入改为网络输入。网络输入需要将摄像头接入和录像机所在路由。设置完毕后应该可以看到摄像头输出的视频。
录像机连接网络。录像机只有一个网口,用于连接路由器。若要通过手机观看,需安装萤石云app,注册登录,并通过扫描硬盘录像机的二维码(录像机开机设置界面)添加录像机。为便于使用SDK,在录像机网络连接正常时,需记录录像机IP地址(与电脑在同一网段,可在录像机视频播放主界面通过点击鼠标右键弹出的主菜单查看)。用于调试程序的电脑也要通过有线接入该路由器。注意是有线接入。若用无线接入,即使接入同一个路由器,IP地址也与录像机不在同一网段,导致程序的录像机登录功能失败。

2.软件准备

这里使用的是Visual Studio 2015,SDK从海康官网下载。下载的文件名为CH-HCNetSDK(Windows32)V5.3.2.15_build20171122.zip,解压后打开子文件夹Demo示例,可以看到有MFC、C#、Java三种语言的示例。这里以实时预览&抓图&云台控制为例进行配置。

3.程序调试

海康给的示例使用Visual Studio 2013开发,本机只有Visual Studio 2015,因此使用Visual Studio 2015进行调试。打开sln文件时会提示升级,升级后进行调试,会出现错误提示,

“/ZI”和“/Gy-”命令行选项不兼容

可通过如下设置解决。进入“项目”—>“属性”—>“C/C++”—>“常规”—>“调试信息格式”—>选择“程序数据库(/Zi)”或“无”。
另外还需添加头文件路径和库文件路径,即CH-HCNetSDK(Windows32)V5.3.2.15_build20171122文件夹中的子文件夹“头文件”和“库文件”,并将库文件添加至项目中。方法如下:

  添加头文件目录:项目-->属性-->C/C++-->常规-->附加包含目录, 编辑为头文件存放目录。添加lib文件:项目-->属性-->链接器-->输入-->附加依赖项,填入库名(HCNetSDK.lib)。否则编译时会提示:fatal error LNK1104: 无法打开文件“×××.lib”。添加库文件路径:  项目-->属性-->链接器-->常规-->附加目录 ,编辑库文件所在的路径即可。添加库文件到工程中(不是必须):在解决方案资源管理器视图中,右键点击项目—>添加—>现有项,选择库文件,确定。

配置完成后,项目应该能生成可执行文件RealPlay.exe,点击Login按钮,若登陆成功,左侧出现摄像头列表,选择其中一个,进行播放,如图所示

登陆按钮响应函数为:

void CRealPlayDlg::OnButtonLogin()
{   if(!m_bIsLogin)    //login{if(!DoLogin())return;DoGetDeviceResoureCfg();  //获取设备资源信息    CreateDeviceTree();        //创建通道树GetDecoderCfg();                           //获取云台×××信息InitDecoderReferCtrl();         //初始化×××相关控件      GetDlgItem(IDC_BUTTON_LOGIN)->SetWindowText("Logout");m_bIsLogin = TRUE;      }else      //logout{           if(m_bIsPlaying|| m_bIsRecording){MessageBox("Stop Play or record first!");return;}NET_DVR_Logout_V30(m_struDeviceInfo.lLoginID); GetDlgItem(IDC_BUTTON_LOGIN)->SetWindowText("Login");m_ctrlTreeChan.DeleteAllItems();m_struDeviceInfo.lLoginID = -1;m_bIsLogin = FALSE;}
}

若登陆界面的用户信息与初始化信息不符,会登录失败并提示错误。登陆界面的Dev IP为前面记录的录像机IP,Password为录像机开机界面设置的用户密码。这两个信息还需要在程序初始化过程设置。
录像机IP在初始化函数中设置。

BOOL CRealPlayDlg::OnInitDialog()
{CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE); // Set the icon for this dialog.  The framework does this automatically//  when the application's main window is not a dialogSetIcon(m_hIcon, TRUE);         // Set big iconSetIcon(m_hIcon, FALSE);        // Set small icon   // TODO: Add extra initialization here//默认IPm_ctrlDevIp.SetAddress(192,168,0,107);}

用户密码在对话框类构造函数中。

CRealPlayDlg::CRealPlayDlg(CWnd* pParent /*=NULL*/): CDialog(CRealPlayDlg::IDD, pParent)
{//{{AFX_DATA_INIT(CRealPlayDlg)// NOTE: the ClassWizard will add member initialization here//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_nDevPort = 8000;m_csUser = _T("admin");m_csPWD = _T("114030ww");m_bIsLogin = FALSE;//m_lLoginID = -1;;m_bIsPlaying = FALSE;m_bIsRecording = FALSE;m_iCurChanIndex = -1;m_lPlayHandle = -1;m_bIsOnCruise = FALSE;m_bTrackRun = FALSE;m_bAutoOn = FALSE;m_bLightOn = FALSE;m_bWiperOn= FALSE;m_bFanOn= FALSE;m_bHeaterOn= FALSE;m_bAuxOn1= FALSE;m_bAuxOn2= FALSE;m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

登陆信息中的端口号8000和用户名admin不需要修改。用户名在录像机开机设置时也无法修改。
完成上述工作后,该程序应该就可以正常运行了。

转载于:https://blog.51cto.com/8764888/2093409

视频监控开发(1)——萤石云硬盘录像机SDK使用相关推荐

  1. EasyMonitor 视频监控开发平台 安装教程(保姆式教程)

    ~~ EasyMonitor 视频监控开发平台 安装教程(保姆式教程) 本教程基于虚拟机环境测试 一.虚拟机安装CENTOS7 我用的是MINI版的只有900M,附一个网盘链接: https://pa ...

  2. 【焕新升级】百度大脑EasyMonitor视频监控开发平台2.0

    百度大脑EasyMonitor视频监控开发平台2.0 焕新升级,预置安全帽检测.电子围栏等11项AI业务技能,助力安全生产. EasyMonitor视频监控开发平台,依托百度大脑人脸.人体.图像识别等 ...

  3. 基于SkeyeVSS二次开发实现自己的安防监控设备网络摄像机、硬盘录像机、国标设备等的WEB无插件直播点播解决方案

    在安防领域,其主要应用场景: 1. 接入设备量大.播放用户量少: 2. 存储录像量大且持久,回放的用户量少: 3. 网络环境复杂,协议兼容性要求高: 我们需要接入多种网络环境下的多种不同协议的设备,例 ...

  4. 利用华为云ECS服务器搭建安防视频监控平台【华为云至简致远】

    1. 前言 华为云的弹性云服务器(Elastic Cloud Server)是一种可随时自助获取.可弹性伸缩的云服务器,帮助用户打造可靠.安全.灵活.高效的应用环境,确保服务持久稳定运行,提升运维效率 ...

  5. 开发物体识别桌、_想用人工智能实现安全风险管控?快来试试EasyMonitor一站式视频监控开发平台...

    随着 AI 技术的日益成熟,越来越多的传统企业都希望用 AI 能力升级原有的管理系统,进而智能化解决业务问题.提高人效.尤其在安全生产领域中,虽然视频监控的覆盖率逐年提升,但大多企业还在沿用人工抽检的 ...

  6. 基于ARM的网络视频监控开发boa+servfox

    http://whlfly.blog.163.com/blog/static/9058441620088424626543/ 2008-09-04 14:46:26|  分类: Linux |字号订阅 ...

  7. H5播放m3u8格式视频(大华、萤石云、海康)

    安装插件 js // 备注:flv可以不安装 cnpm install chimee chimee-kernel-flv chimee-kernel-hls -S 项目中使用 ```js ``` 销毁 ...

  8. 网络硬盘录像机、边缘存储和云存储的优缺点

    网络摄像机的出现改变了存储解决方案在安防行业的面貌.由于监控系统转向基于网络的系统,记录和存储的选择不再明确.如今的存储方案包括网络硬盘录像机NVR.边缘存储和云存储解决方案.通过首先区分每种方案的优 ...

  9. 云储存将成未来大规模视频监控储存主要模式

    存储在视频监控领域的发展与视频监控本身的发展有着密切的联系.视频监控经历了模拟.数字.网络三个阶段,存储在视频监控领域的应用也经历了模拟.数字.网络这三个阶段.而随着高清技术逐渐普及,高清监控的应用对 ...

最新文章

  1. 如何解决 SQL Server 2000 中的连接问题
  2. httpClient多线程问题
  3. Maven构建Struts2框架的注意事项
  4. python文本字符串比对_python-模糊字符串比较
  5. java验证cron表达式_cron表达式
  6. php写时间 自动,ThinkPHP6.0 自动写入时间戳
  7. JAVA 正则表达式(大全)
  8. 一位博士在华为的 22 年(干货满满)
  9. 夜天之书 #34 企业如何实践开源协同
  10. jdk1.8的环境配置
  11. 安科瑞【节能学院】电气火灾监控系统在太焦铁路博爱站房项目的应用
  12. [附源码]PHP计算机毕业设计小斌美食网站(程序+LW)
  13. dfuse 与 Solana 宣布合作,为其高吞吐量区块链提供强大的数据解决方案
  14. 滑动验证码破解—python—以某东网站为例
  15. 由“戴尔用博客与中国用户沟通”想起
  16. 群晖linux怎么进入u盘,黑群晖菜鸟安装教程(一)制作U盘引导及软洗白!
  17. 华为鸿蒙系统问世微信红包,一个巨头的诞生 华为鸿蒙车机系统问世
  18. sql dateadd函数_什么是SQL Server DATEADD()函数?
  19. 2019计算机学院年会主持稿,2019年学术年会主持稿-范文汇编.doc
  20. Javascript面向对象编程指南笔记 - 第三章 - 函数

热门文章

  1. (完全理解)二重积分中的换元积分中的雅可比矩阵
  2. Linux下Socket编程一 socket 基础
  3. Java Web中Forward和redirect的区别
  4. 【AE扩展插件问题解决记录】
  5. CC3200学习总结
  6. 83. 测试是软件开发的工程严谨度
  7. sql查询语句 -牛客学习笔记
  8. Example 类的作用
  9. C++函数的递归调用
  10. PostgreSQL对不足位数的查询结果进行前后补0