IP Camera网络摄像头调用ocx实时预览
By
admin
at 2023-02-27 • 0人收藏 • 835人看过
最近准备研究下网络摄像头, 在网上买了个100多块钱的, 内部摄像头芯片是杭州雄迈的, 官方提供了xNetSdk给我, 这个sdk只有64位的下载 , c#测试了实时性不错, 清晰度还行.
备注: 海康,大华这些大厂是有提供32和64版本dll的.
这个64位的sdk的使用会在另外的帖子里写
我在它的官网看到可以web浏览器调用, 只需要安装ocx...
安装后看了下, 它里面的netsdk.dll是32位的?! 这不是有嘛....
那么我们aar可以先用ocx, 所以有了这篇测试文章.
后面再去研究那个netsdk.dll 参看: https://chengxu.xyz/t/21434
ocx的方式经过测试比直接用64位sdk的延迟大不少 , 有种浅泥潭里的感觉(后来发现官方的vsm软件也是32位这个dll,同样的会有泥潭里的感觉,所以应该是32位动态库的问题)
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=772;bottom=617) winform.add( button2={cls="button";text="获取当前镜像状态";left=287;top=398;right=470;bottom=457;z=2}; button3={cls="button";text="设置当前镜像状态";left=621;top=398;right=752;bottom=457;z=4}; button4={cls="button";text="用户配置";left=129;top=398;right=233;bottom=457;z=7}; button5={cls="button";text="驱动配置";left=8;top=398;right=116;bottom=457;z=8}; checkbox={cls="checkbox";text="Reversal 上下";left=497;top=409;right=587;bottom=431;z=5}; checkbox2={cls="checkbox";text="Mirror 左右";left=497;top=442;right=587;bottom=464;z=6}; custom={cls="custom";text="自定义控件";left=0;top=0;right=773;bottom=384;z=9}; ) /*}}*/ import console console.open() var video = winform.custom.createEmbedEx("{FD3BEB0C-AB43-4253-9146-C371D48FBE0D}"); var fullscreen = false; //事件监听 双击 video.DblClick = function(){ //双击全屏 / 取消全屏 console.log("DblClick"); fullscreen = !fullscreen; video.Fullscreen(fullscreen); } //单击 video.Click = function(){ console.log("Click") } //右键 video.RButtonDown = function(nFlag,x,y){ console.log("RButtonDown",nFlag,x,y) } try{ //登录 video.Login("192.168.1.153",34567,"admin",""); //开启 video.StartRealPlay(0,0,0); } catch(e){ winform.msgbox("打开失败") } winform.button2.oncommand = function(id,event){ //获取当前镜像状态 , 第三个参数0=get获取, 1=set设置,返回的时string ,如:"1,0" var retStr = video.GetSetCamera(false,false,0); winform.checkbox.checked = (tonumber(retStr[[1]]))?true:false; winform.checkbox2.checked = (tonumber(retStr[[3]]))?true:false; } winform.button3.oncommand = function(id,event){ //设置当前镜像状态 , 第三个参数0=get获取, 1=set设置 video.GetSetCamera(winform.checkbox.checked,winform.checkbox2.checked,1) } winform.button4.oncommand = function(id,event){ //显示用户配置界面 video.ShowClientConfig() } winform.button5.oncommand = function(id,event){ //显示驱动配置界面 video.ShowDeviceConfig() } winform.show(); win.loopMessage(); winform.show(); win.loopMessage();
附件:
我大概试了下, 其实只用下面这几个dll就行了.
sdk官方:
4 个回复 | 最后更新于 2023-03-07
加入画十字线标注功能.
模糊是录屏压缩导致的....本来也没聚焦
动图里面的拖拽区域放大时ocx自带的功能
这个ocx也支持 上下左右镜像功能, 还有对摄像头的配置窗口. 蛮全面的.
import win.ui; /*DSG{{*/ var winform = win.form(text="aardio form";right=772;bottom=617) winform.add( video_Vline={cls="plus";left=373;top=0;right=374;bottom=618;bgcolor=255;db=1;dt=1;z=2}; video_hline={cls="plus";left=0;top=225;right=773;bottom=226;bgcolor=255;dl=1;dr=1;z=1} ) /*}}*/ import console console.open() var video = winform.createEmbedEx("{FD3BEB0C-AB43-4253-9146-C371D48FBE0D}",,{ Click = function(){//单击事件 video.Click(); }; DblClick = function(){//双击事件 video.DblClick(); }; RButtonDown = function(nFlag,x,y){//右键事件 video.RButtonDown(nFlag,x,y); }; }); var fullscreen = false; video.DblClick = function(){ //双击全屏 / 取消全屏 console.log("DblClick"); fullscreen = !fullscreen; video.Fullscreen(fullscreen); } video.Click = function(){ console.log("Click") var x,y = win.getMessagePos(); x,y = win.toClient(winform.hwnd,x,y); winform.video_hline.setPos(0,y); winform.video_Vline.setPos(x,0); } video.RButtonDown = function(nFlag,x,y){ console.log("RButtonDown",nFlag,x,y) } try{ //登录 video.Login("192.168.1.153",34567,"admin",""); //开启 video.StartRealPlay(0,0,0); } catch(e){ winform.msgbox("打开失败") } winform.show(); win.loopMessage();
登录后方可回帖
这个号哪来的?