调查的目的是寻求兼容多浏览器内核的相机解决方案,记录了一些内容,对小白应该有些帮助html
1、相关知识点web
1,ActiveX控件浏览器
ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。 ActiveX 控件是用于互联网的很小的程序,有时称为插件程序。它们会容许播放动画,或帮助执行任务,如在 Microsoft Update 安装安全更新,所以能够加强您的浏览体验。安全
2,COM组件、ActiveX、OCX区别网络
COM 组件就是一组接口的集合,实现了 IDispath 接口的 COM 组件叫作 自动化组件。在自动化组件的基础上,在实现规定的接口就称为 ActiveX 组件,Ocx 是 Activex 的文件载体app
通常来说 ,一个 ActiveX 对应一个 Ocx 文件, 若是愿意, 一个Ocx 文件也能够包含多个 ActiveX 控件 至关于ActiveX框架
3,<object> 标签dom
定义一个嵌入的对象。请使用此元素向您的 XHTML 页面添加多媒体。此元素容许您规定插入 HTML 文档中的对象的数据和参数,以及可用来显示和操做数据的代码。分布式
<object> 标签用于包含对象,好比图像、音频、视频、Java applets、ActiveX、PDF 以及 Flash。 object 的初衷是取代 img 和 applet 元素。不过因为漏洞以及缺少浏览浏览器支持,这一点并未实现。 浏览器的对象支持有赖于对象类型。不幸的是,主流浏览器都使用不一样的代码来加载相同的对象类型。 而幸运的是,object 对象提供了解决方案。若是未显示 object 元素,就会执行位于 <object> 和 </object> 之间的代码。经过这种方式,咱们可以嵌套多个 object 元素(每一个对应一个浏览器) object标签不在dom文档流里面,浏览器在解析的时候先把object放置在最上层,而后依次解析dom文档,放在下层,而且在这里使用z-index是无效的,会形成object内容区域遮住其它内容的问题工具
2、关于车牌识别一体机ocx控件的说明
此控件设备厂家提供的调用相机的程序,能够基于该控件二次开发,对于不一样厂商,此控件会有不一样,因此若是使用不一样厂商提供的相机,要注册安装的控件也不一样
3、.非ie浏览器如何支持activex控件
1,开发相关控件
基于 IE 的 插件 和 基于 webkit 的插件机制是不一样的 , IE插件 遵循的是 ACTIVEX 标准, webkit族(FF,OPERA,CHROME,SAFARI) 是采用的 NPAPI 的标准 。
若是你要兼容多种浏览器 ,那么就要在你的 DLL 中公开 AX 和 NPAPI 的接口, AX dll 有四个标准接口,NPAPI 好像也有四个 ,你在你DLL 分别实现就能够了 ,codeproject 上有相关的文章,N多年前的 。 所幸,如今不用那么麻烦了 ,有好事者开发了 firebreath 框架,一次编写就能够实现两种方式的接口。 不过有个坏消息, CHROME 对NPAPI 的支持 是到 2015年9月, 也就是说 你用 NPAPI 或者 firebreath 编写的控件,在9月份以后就不能够在 CHROME 中运行了 。
参考:https://blog.csdn.net/xuebing1995/article/details/78189701?locationNum=5&fps=1
https://blog.csdn.net/johnson2008t/article/details/46126605
PPAPI插件开发指南:http://www.cnblogs.com/fangkm/p/6628425.html
结果:相关资料少,技术难度大,并且开发结果未知
2,安装相关插件
1)支持ocx的插件
https://blog.csdn.net/wangchao1988ok/article/details/45193489
https://www.cnblogs.com/lidabo/p/3580643.html
2)支持ie内核兼容插件
结果:相关插件都不起做用
总结:微软独有的东西,其它浏览器都不支持
4、JavaScript调用OCX
一、注册(安装)他们提供的控件,不是经过ie输入IP访问相机时提示要下载安装的控件,那是他们的配置相机的客户端, 而是他们发给咱们的文件
2,、打开注册表,查找 “BRLPRClientCtrl” 控件的classid
HTML调用demo
<html> <head> <meta charset="UTF-8"> <title>demo</title> </head> <body> <div style="text-align:center;" > <div> <button onclick="load()">click</button> <object style="width: 400px;height: 400px;" classid="CLSID:3DBC7290-457B-48A4-8DCD-ADECC11E1228" id="inax0" > </object> </div> </div> <script> function load(){ //一、获取摄像头区域对象 var ocx = document.getElementById('inax0'); //二、打开摄像头,依次配置ip,端口,用户名,密码 var hader= ocx.BRLPRClientOpen ("192.168.2.208", 30000, "admin", "admin"); //三、播放视频 var result=ocx.BRLPRClientStartPlay(hader,0); //额外说明,不一样厂商基本是二、3步骤调用的方法名不一样,默认端口也不一样 } </script> </body> </html>
注意:要使用正确的classid,并设置ie浏览器支持active控件
参考:https://www.cnblogs.com/techdreaming/p/7387925.html
5、总体总结
一、能支持active控件的只有ie浏览器,连他的自家兄弟edge也不行,测试结果是必须ie8以上
二、没有办法能让非ie浏览器支持active控件.
三、active控件是由具体的相机厂家提供的,咱们能够根据控件作二次开发,可是不能跳过控件调用相机
因此,基于active控件调用的相机,暂时没法作到多浏览器的兼容,必须使用非active控件调用的相机
6、参考
车牌识别一体机OCX控件使用文档
https://wenku.baidu.com/view/14a249e3482fb4daa48d4bbc.html
车牌识别一体机配置指南:
https://wenku.baidu.com/view/63767e81b9f67c1cfad6195f312b3169a551ea56.html