IP Camera网络摄像头调用ocx实时预览

By admin at 2023-02-27 • 0人收藏 • 814人看过

最近准备研究下网络摄像头, 在网上买了个100多块钱的, 内部摄像头芯片是杭州雄迈的, 官方提供了xNetSdk给我, 这个sdk只有64位的下载 , c#测试了实时性不错, 清晰度还行.

备注: 海康,大华这些大厂是有提供32和64版本dll的.

这个64位的sdk的使用会在另外的帖子里写

image.png


image.png


我在它的官网看到可以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();


附件:

NetSdk_Com.zip


我大概试了下, 其实只用下面这几个dll就行了.

image.png

sdk官方:

https://developer.jftech.com/docs/?menusId=57e91028bdc14909b269ddb19180d30a&siderid=2fff460ae8a448268137094ded532f67&lang=zh

4 个回复 | 最后更新于 2023-03-07
2023-03-01   #1
var pvideo = winform.createEmbed("{FD3BEB0C-AB43-4253-9146-C371D48FBE0D}");

这个号哪来的?

2023-03-01   #2

回复#1 @jerryxjr1220 :

看这里 https://chengxu.xyz/t/21376 

可以用 COMRaider 也可以用 RegDllView 软件.

2023-03-01   #3

2023-03-07   #4

加入画十字线标注功能.

模糊是录屏压缩导致的....本来也没聚焦

动图里面的拖拽区域放大时ocx自带的功能

这个ocx也支持 上下左右镜像功能, 还有对摄像头的配置窗口. 蛮全面的.

screenshots.gif

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();


登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...