在Electron中使用海康网络摄像头的注意事项

        在一个Electron项目中需要调用海康网络摄像头,经调研,摄像头需要本地安装相关驱动,并在程序中加载摄像头提供的SDK,然后通过SDK提供的方法调用本地驱动来执行想做的操作。

        这里我使用官网提供的 WEB SDK 来进行开发(没有直接为Electron或Nodejs提供服务的SDK)。

      准备工作

        工具:WEB3.3控件开发包 V3.3

        下载 WEB SDK 文件后,里面有个 demo 网页以及相关的资源。开发需要引用的资源包括以下几个:

        1)HCWebSDKPlugin.exe 海康摄像头驱动程序,需要事先安装到电脑上;
        2)jsVideoPlugin-1.0.0.min、jquery-1.7.1.min.js、webVideoCtrl.js SDK文件及其依赖文件,需要加载到Electron项目中。

      注意事项

        项目中大部分功能可以参考SDK中的demo文件来完成,但是在开发过程中遇到一些似难实简的问题。

        1)画面层级

        摄像头的画面应该是调用本地驱动进行实现的,然后渲染到指定元素在屏幕上的坐标上。在页面元素中是看不到实际的图像元素的。

        下方示图是网络摄像头自带的管理页面,可以看到图像已经跃升到浏览器控制台上方了。

        2)画面定位

        在程序中初始化插件时,会关联一个页面中的DOM元素,当画面渲染的时候会根据该dom元素按照“当前页面中的坐标值”进行渲染。

        在这个项目中,因为要嵌入三个摄像头,为了便于开发,摄像头是放在iframe中,然后再定位到程序的指定位置。因为在iframe中的元素是撑满html的,坐标为(0,0);但插件渲染画面时,是相对程序进行定位的,但使用的是iframe中得到的坐标,所以会导致图像与iframe位置发生偏差。

        解决办法:在开发时,iframe中的元素定位需要追加上它在程序中的坐标。

        3)多画面的层级关系

        如下图所示,最初设计图中,辅助镜头是浮在主镜头上方的,然后点击辅助镜头画面可以将其切换为主镜头。

        但是在实际开发中,如果初始化时直接按设计图渲染好,那么这时如果点击了主镜头(主镜头获得了焦点),那么主镜头的层级就会上升到辅助镜头上方,会挡住辅助镜头。

        解决办法:避免摄像头画面垒叠。

      整体效果

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

半吊子伯爵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值