package com.netsdk.demo.customize;
|
|
import com.netsdk.demo.util.CaseMenu;
|
import com.netsdk.lib.NetSDKLib;
|
import com.netsdk.lib.ToolKits;
|
import com.netsdk.lib.enumeration.*;
|
import com.netsdk.lib.structure.*;
|
import com.netsdk.lib.utils.Initialization;
|
import com.sun.jna.Memory;
|
import com.sun.jna.Pointer;
|
|
import java.io.File;
|
import java.io.UnsupportedEncodingException;
|
import java.util.Date;
|
import java.util.Objects;
|
import java.util.Scanner;
|
|
import static com.netsdk.lib.NetSDKLib.NET_MAX_DETECT_REGION_NUM;
|
|
public class VideoAnalyseAnalyseProcDemo extends Initialization {
|
|
int channel = 0;
|
|
public void setChannel(int channel) {
|
this.channel = channel;
|
}
|
|
NetSDKLib.LLong attachHandle = new NetSDKLib.LLong(0);
|
|
/**
|
* 订阅智能任务
|
*/
|
|
public NetSDKLib.LLong AttachVideoAnalyseAnalyseProc() {
|
// 先退订,设备不会对重复订阅作校验,重复订阅后会有重复的事件返回
|
if (attachHandle.longValue() != 0) {
|
this.DetachVideoAnalyseAnalyseProc();
|
}
|
|
NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC stIn = new NET_IN_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC();
|
stIn.nChannelId = channel;
|
NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC stOut = new NET_OUT_ATTACH_VIDEO_ANALYSE_ANALYSE_PROC();
|
stIn.cbVideoAnalyseAnalyseProc = new VideoAnalyseAnalyseCB();
|
|
stIn.write();
|
stOut.write();
|
|
System.out.println("stIn.dwSize = " + stIn.dwSize);
|
System.out.println("stOut.dwSize = " + stOut.dwSize);
|
|
attachHandle = netSdk.CLIENT_AttachVideoAnalyseAnalyseProc(loginHandle, stIn.getPointer(), stOut.getPointer(),
|
5000);
|
if (attachHandle.longValue() != 0) {
|
System.out.printf("Chn[%d] CLIENT_AttachVideoAnalyseAnalyseProc Success\n", channel);
|
} else {
|
System.out.printf("Chn[%d] CLIENT_AttachVideoAnalyseAnalyseProc Failed!LastError = %s\n", channel,
|
ToolKits.getErrorCode());
|
}
|
|
return attachHandle;
|
}
|
|
/**
|
* 报警事件(智能)回调
|
*/
|
private static class VideoAnalyseAnalyseCB implements NetSDKLib.fVideoAnalyseAnalyseProc {
|
private static VideoAnalyseAnalyseProcDemo.VideoAnalyseAnalyseCB instance;
|
|
private VideoAnalyseAnalyseCB() {
|
}
|
|
public static VideoAnalyseAnalyseProcDemo.VideoAnalyseAnalyseCB getInstance() {
|
if (instance == null) {
|
synchronized (VideoAnalyseAnalyseProcDemo.VideoAnalyseAnalyseCB.class) {
|
if (instance == null) {
|
instance = new VideoAnalyseAnalyseProcDemo.VideoAnalyseAnalyseCB();
|
}
|
}
|
}
|
return instance;
|
}
|
|
@Override
|
public void invoke(NetSDKLib.LLong lAttachHandle, Pointer pstuVideoAnalyseTrackProc, Pointer dwUser) {
|
System.out.println("========================Enter invoke========================");
|
NET_VIDEO_ANALYSE_ANALYSE_PROC msg = new NET_VIDEO_ANALYSE_ANALYSE_PROC();
|
ToolKits.GetPointerData(pstuVideoAnalyseTrackProc, msg);
|
System.out.println("msg.nChannelId = " + msg.nChannelId);
|
System.out.println("msg.stuUTC = " + msg.stuUTC.toStringTime());
|
|
System.out.println("msg.nObjectListNum = " + msg.nObjectListNum);
|
NET_VEHICLE_FUSED_OBJECT[] tmpObjectList = new NET_VEHICLE_FUSED_OBJECT[msg.nObjectListNum];
|
for (int i = 0; i < msg.nObjectListNum; i++) {
|
tmpObjectList[i] = new NET_VEHICLE_FUSED_OBJECT();
|
}
|
// msg.pstuObjectList = new Memory(tmpObjectList[0].size() * msg.nObjectListNum);
|
ToolKits.GetPointerDataToStructArr(msg.pstuObjectList, tmpObjectList);
|
for (int i = 0; i < msg.nObjectListNum; i++) {
|
System.out.println("ObjectList[" + i + "].nObjectID = " + tmpObjectList[i].nObjectID);
|
System.out.println("ObjectList[" + i + "].emObjectType = " + tmpObjectList[i].emObjectType);
|
System.out.println("ObjectList[" + i + "].fSpeed = " + tmpObjectList[i].fSpeed);
|
System.out.println("ObjectList[" + i + "].fAcceleration = " + tmpObjectList[i].fAcceleration);
|
System.out.println("ObjectList[" + i + "].nLaneID = " + tmpObjectList[i].nLaneID);
|
System.out.println("ObjectList[" + i + "].nLocatedAreasNum = " + tmpObjectList[i].nLocatedAreasNum);
|
for(int j = 0; j < tmpObjectList[i].nLocatedAreasNum; j ++){
|
System.out.println("ObjectList[" + i + "].stuLocatedAreas["+j+"].nType = " + tmpObjectList[i].stuLocatedAreas[j].nType);
|
System.out.println("ObjectList[" + i + "].stuLocatedAreas["+j+"].szIDStr = " + new String(tmpObjectList[i].stuLocatedAreas[j].szIDStr).trim());
|
}
|
}
|
|
System.out.println("msg.nEventListCount = " + msg.nEventListCount);
|
int[] dwEventCode = msg.dwEventCode;
|
for (int i = 0; i < msg.nEventListCount; i++) {
|
if (dwEventCode[i] != NetSDKLib.EVENT_IVS_COLLISION_CONFLICT) {
|
return;
|
}
|
;
|
NET_DEV_EVENT_COLLISION_CONFLICT_INFO tmpEvent = new NET_DEV_EVENT_COLLISION_CONFLICT_INFO();
|
ToolKits.GetPointerDataToStruct(msg.pstuEventList[i], 0, tmpEvent);
|
|
System.out.println("EventList[" + i + "].nChannelID = " + tmpEvent.nChannelID);
|
System.out.println("EventList[" + i + "].nAction = " + tmpEvent.nAction);
|
System.out.println("EventList[" + i + "].szName = " + new String(tmpEvent.szName).trim());
|
System.out.println("EventList[" + i + "].nEventID = " + tmpEvent.nEventID);
|
System.out.println("EventList[" + i + "].nType = " + tmpEvent.nType);
|
System.out.println("EventList[" + i + "].nLeftTime = " + tmpEvent.nLeftTime);
|
System.out.println("EventList[" + i + "].fConflictLevel = " + tmpEvent.fConflictLevel);
|
System.out.println("EventList[" + i + "].fConfidence = " + tmpEvent.fConfidence);
|
System.out.println("EventList[" + i + "].nObjectsCount = " + tmpEvent.nObjectsCount);
|
for (int j = 0; j < tmpEvent.nObjectsCount; j++) {
|
System.out.println("EventList[" + i + "].stuObjects[" + j + "].nObjectID = "+ tmpEvent.stuObjects[j].nObjectID);
|
System.out.println("EventList[" + i + "].stuObjects[" + j + "].emObjectType = "+ tmpEvent.stuObjects[j].emObjectType);
|
System.out.println("EventList[" + i + "].stuObjects[" + j + "].fSpeed = " + tmpEvent.stuObjects[j].fSpeed);
|
System.out.println("EventList[" + i + "].stuObjects[" + j + "].fAcceleration = "+ tmpEvent.stuObjects[j].fAcceleration);
|
System.out.println("EventList[" + i + "].stuObjects[" + j + "].nLaneID = " + tmpEvent.stuObjects[j].nLaneID);
|
}
|
}
|
|
}
|
}
|
|
/**
|
* 停止侦听智能事件
|
*/
|
public void DetachVideoAnalyseAnalyseProc() {
|
if (this.attachHandle.longValue() != 0) {
|
netSdk.CLIENT_DetachVideoAnalyseAnalyseProc(this.attachHandle);
|
}
|
}
|
|
public void RunTest() {
|
System.out.println("Run Test");
|
CaseMenu menu = new CaseMenu();
|
;
|
menu.addItem((new CaseMenu.Item(this, "AttachVideoAnalyseAnalyseProc", "AttachVideoAnalyseAnalyseProc")));
|
menu.addItem((new CaseMenu.Item(this, "DetachVideoAnalyseAnalyseProc", "DetachVideoAnalyseAnalyseProc")));
|
|
menu.run();
|
}
|
|
public static void main(String[] args) {
|
VideoAnalyseAnalyseProcDemo RealLoadPicExDemo = new VideoAnalyseAnalyseProcDemo();
|
Scanner sc = new Scanner(System.in);
|
// System.out.print("ip:");
|
// String ip = sc.nextLine();
|
// System.out.print("port:");
|
// String tmp = sc.nextLine();
|
// int port = Integer.parseInt(tmp);
|
// System.out.print("username:");
|
// String username = sc.nextLine();
|
// System.out.print("password:");
|
// String pwd = sc.nextLine();
|
String ip = "10.33.121.89";
|
int port = 32200;
|
String username = "admin";
|
String pwd = "admin123";
|
InitTest(ip, port, username, pwd);
|
|
// System.out.print("channel:");
|
// String tmp2 = sc.nextLine();
|
// int channel = Integer.parseInt(tmp2);
|
int channel = 0;
|
RealLoadPicExDemo.setChannel(channel);
|
|
RealLoadPicExDemo.RunTest();
|
LoginOut();
|
|
}
|
}
|