1021 lines
34 KiB
Java
1021 lines
34 KiB
Java
package com.whdc.video;
|
|
|
|
import java.io.File;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
|
|
import java.util.Scanner;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import com.sun.jna.Pointer;
|
|
import com.sun.jna.ptr.IntByReference;
|
|
import com.sun.jna.ptr.PointerByReference;
|
|
import com.sun.jna.Memory;
|
|
|
|
|
|
public class VideoCtrl {
|
|
static int m_iLogonID = -1;
|
|
static int m_iConnectID = -1;
|
|
Map<String, Integer> m_mapOptCmd = new HashMap<String, Integer>();
|
|
|
|
NVSSDK1.MAIN_NOTIFY cbkMain = new NVSSDK1.MAIN_NOTIFY() {
|
|
public void MainNotify(int iLogonID, int wParam, Pointer lParam, Pointer noitfyUserData) {
|
|
int iMsgType = wParam & 0xFFFF;
|
|
switch (iMsgType) {
|
|
case NVSSDK1.WCM_LOGON_NOTIFY: {
|
|
try {
|
|
int iLogonStatus = NetClient1.GetLogonStatus(iLogonID);
|
|
NVSSDK1.ENCODERINFO tDevInfo = new NVSSDK1.ENCODERINFO();
|
|
NetClient1.GetDevInfo(iLogonID, tDevInfo);
|
|
|
|
String strIP = new String(tDevInfo.m_cEncoder).trim();
|
|
String strID = new String(tDevInfo.m_cFactoryID).trim();
|
|
LogonNotify(strIP, strID, iLogonID, iLogonStatus);
|
|
} catch(Exception e) {
|
|
e.printStackTrace();
|
|
}
|
|
break;
|
|
} case NVSSDK1.WCM_QUERYFILE_FINISHED: {
|
|
System.out.println("MainNotify:WCM_QUERYFILE_FINISHED!");
|
|
break;
|
|
} case NVSSDK1.WCM_DWONLOAD_FINISHED: {
|
|
System.out.println("MainNotify:WCM_DWONLOAD_FINISHED!");
|
|
break;
|
|
} case NVSSDK1.WCM_DWONLOAD_FAULT: {
|
|
System.out.println("MainNotify:WCM_DWONLOAD_FAULT!");
|
|
NetClient1.NetFileStopDownloadFile(m_iConnectID);
|
|
break;
|
|
} case NVSSDK1.WCM_DOWNLOAD_INTERRUPT: {
|
|
System.out.println("MainNotify:WCM_DOWNLOAD_INTERRUPT!");
|
|
NetClient1.NetFileStopDownloadFile(m_iConnectID);
|
|
break;
|
|
} default: break;
|
|
}
|
|
}
|
|
};
|
|
|
|
public void LogonNotify(String strIP, String strID, int iLogonID, int iLogonState) {
|
|
String strMsg = new String();
|
|
m_iLogonID = -1;
|
|
switch (iLogonState) {
|
|
case NVSSDK1.LOGON_SUCCESS: {
|
|
m_iLogonID = iLogonID;
|
|
strMsg = "LOGON_SUCCESS";
|
|
break;
|
|
} case NVSSDK1.LOGON_FAILED: {
|
|
strMsg = "LOGON_FAILED";
|
|
break;
|
|
} case NVSSDK1.LOGON_TIMEOUT: {
|
|
strMsg = "LOGON_TIMEOUT";
|
|
break;
|
|
} case NVSSDK1.LOGON_RETRY: {
|
|
strMsg = "LOGON_RETRY";
|
|
break;
|
|
} case NVSSDK1.LOGON_ING: {
|
|
strMsg = "LOGON_ING";
|
|
break;
|
|
} default: {
|
|
System.out.println("[WCM_LOGON_NOTIFY][" + iLogonState + "] IP("
|
|
+ strIP + "),ID(" + strID + "),LogonID(" + iLogonID + ")");
|
|
break;
|
|
}
|
|
}
|
|
System.out.println("[WCM_LOGON_NOTIFY][" + strMsg + "] IP(" + strIP
|
|
+ "),ID(" + strID + "),LogonID(" + iLogonID + ")");
|
|
};
|
|
|
|
NVSSDK1.ALARM_NOTIFY cbkAlarm = new NVSSDK1.ALARM_NOTIFY() {
|
|
public void AlarmNotify(int _iLogonID, int _iChannel,
|
|
int _iAlarmState, int _iAlarmType, Pointer _pUserData) {
|
|
}
|
|
};
|
|
|
|
NVSSDK1.PARACHANGE_NOTIFY cbkParaChange = new NVSSDK1.PARACHANGE_NOTIFY() {
|
|
public void ParaChangeNotify(int iLogonID, int iChannel, int paraType,
|
|
Pointer para, Pointer noitfyUserData) {
|
|
}
|
|
};
|
|
|
|
NVSSDK1.RECVDATA_NOTIFY cbkRecvData = new NVSSDK1.RECVDATA_NOTIFY() {
|
|
public void RecvDataNotify(int _ulID, Pointer data, int len, int _iFlag, Pointer _lpUserData) {
|
|
System.out.println("[RECVDATA_NOTIFY] ConnID(" + _ulID + "), DataLen(" + len + ")");
|
|
}
|
|
};
|
|
|
|
//Network raw stream callback, it is not recommended that the user directly process the data
|
|
NVSSDK1.NVSDATA_NOTIFY cbkNvsData = new NVSSDK1.NVSDATA_NOTIFY() {
|
|
public void NvsDataNotify(int _uiID, Pointer _pucData, int _iLen, Pointer _iUser) {
|
|
//System.out.println("[NVSDATA_NOTIFY] ConnID(" + _uiID + "), DataLen(" + _iLen + ")");
|
|
}
|
|
};
|
|
|
|
public int SaveYuvData(Pointer data, int len)
|
|
{
|
|
FileOutputStream fopYuv = null;
|
|
File fileYuv;
|
|
try
|
|
{
|
|
fileYuv = new File("mySnapShot.yuv");
|
|
fopYuv = new FileOutputStream(fileYuv, true);
|
|
|
|
// if file doesnt exists, then create it
|
|
if (!fileYuv.exists())
|
|
{
|
|
fileYuv.createNewFile();
|
|
}
|
|
|
|
// get the content in bytes
|
|
byte[] contentInBytes = data.getByteArray(0, len);
|
|
|
|
//save decode yuv video data
|
|
fopYuv.write(contentInBytes);
|
|
fopYuv.flush();
|
|
fopYuv.close();
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
e.printStackTrace();
|
|
}
|
|
finally
|
|
{
|
|
try {
|
|
if (null != fopYuv) {
|
|
fopYuv.close();
|
|
fopYuv = null;
|
|
}
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
};
|
|
|
|
public int SaveRawData(int type, Pointer data, int len)
|
|
{
|
|
FileOutputStream fopRawVideo = null;
|
|
File fileRawVideo;
|
|
FileOutputStream fopRawAudio = null;
|
|
File fileRawAudio;
|
|
try
|
|
{
|
|
if (null == fopRawVideo)
|
|
{
|
|
fileRawVideo = new File("myVideoRawData.raw");
|
|
fopRawVideo = new FileOutputStream(fileRawVideo, true);
|
|
|
|
// if file doesnt exists, then create it
|
|
if (!fileRawVideo.exists())
|
|
{
|
|
fileRawVideo.createNewFile();
|
|
}
|
|
}
|
|
|
|
if (null == fopRawAudio)
|
|
{
|
|
fileRawAudio = new File("myAudioRawData.raw");
|
|
fopRawAudio = new FileOutputStream(fileRawAudio, true);
|
|
|
|
// if file doesnt exists, then create it
|
|
if (!fileRawAudio.exists())
|
|
{
|
|
fileRawAudio.createNewFile();
|
|
}
|
|
}
|
|
|
|
// get the content in bytes
|
|
byte[] contentInBytes = data.getByteArray(0, len);
|
|
if(NVSSDK1.AUDIO_FRAME == type) {
|
|
//save raw video data
|
|
fopRawAudio.write(contentInBytes);
|
|
fopRawAudio.flush();
|
|
fopRawAudio.close();
|
|
} else {
|
|
//save raw audio data
|
|
fopRawVideo.write(contentInBytes);
|
|
fopRawVideo.flush();
|
|
fopRawVideo.close();
|
|
}
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
e.printStackTrace();
|
|
}
|
|
finally
|
|
{
|
|
try {
|
|
if (null != fopRawVideo) {
|
|
fopRawVideo.close();
|
|
fopRawVideo = null;
|
|
}
|
|
if (null != fopRawAudio) {
|
|
fopRawAudio.close();
|
|
fopRawAudio = null;
|
|
}
|
|
}
|
|
catch (IOException e)
|
|
{
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
};
|
|
|
|
NVSSDK1.RAWFRAME_NOTIFY cbkRawFrame = new NVSSDK1.RAWFRAME_NOTIFY() {
|
|
public void rawFrameNotify(int _uiID, Pointer _pcData, int _iLen, NVSSDK1.RAWFRAME_INFO _ptRawFrameInfo, Pointer _lpUserData) {
|
|
//print data information
|
|
//System.out.println("recvRawData: _uiID=" + _uiID + ", _iLen=" + _iLen + ", nType=" + _ptRawFrameInfo.nType);
|
|
|
|
//user can save and process raw stream data
|
|
if (null != _pcData && 0 != _iLen) {
|
|
SaveRawData(_ptRawFrameInfo.nType, _pcData, _iLen);
|
|
}
|
|
}
|
|
};
|
|
|
|
NVSSDK1.DECYUV_NOTIFY_V4 cbkDecYuv = new NVSSDK1.DECYUV_NOTIFY_V4() {
|
|
public void decYuvNotify(int _uiID, Pointer _pcData, int _iLen, NVSSDK1.FRAME_INFO _pFrameInfo, Pointer _pvUser) {
|
|
//print data information
|
|
//System.out.println("recvDecYuvData: _uiID=" + _uiID + ", _iLen=" + _iLen + ", nType=" + _pFrameInfo.nType);
|
|
}
|
|
};
|
|
|
|
private void sdkInit() {
|
|
NVSSDK1.SDK_VERSION ver = new NVSSDK1.SDK_VERSION();
|
|
int iRet = NetClient1.GetVersion(ver);
|
|
System.out.println("[SDK_VERSION]" + ver.m_cVerInfo);
|
|
|
|
iRet = NetClient1.SetNotifyFunction(cbkMain, cbkAlarm, cbkParaChange);
|
|
System.out.println("SetNotifyFunction(" + iRet + ")");
|
|
|
|
iRet = NetClient1.Startup();
|
|
System.out.println("Startup(" + iRet + ")");
|
|
};
|
|
|
|
private void sdkUnInit() {
|
|
int iRet = NetClient1.Cleanup();
|
|
System.out.println("Cleanup(" + iRet + ")");
|
|
};
|
|
|
|
public void Logon()
|
|
{
|
|
Scanner scanInput = new Scanner(System.in);
|
|
System.out.println("Please enter the device IP:");
|
|
String strDevIP = scanInput.next();
|
|
System.out.println("Please enter the device port:");
|
|
int iDevPort = scanInput.nextInt();
|
|
System.out.println("Please enter user name:");
|
|
String strUserName = scanInput.next();
|
|
System.out.println("Please enter your password:");
|
|
String strUserPwd = scanInput.next();
|
|
System.out.println("Logon" + strDevIP + ":" + iDevPort + "-" +strUserName + "-" + strUserPwd);
|
|
NVSSDK1.LogonPara tLogonPara = new NVSSDK1.LogonPara();
|
|
tLogonPara.iSize = tLogonPara.size();
|
|
tLogonPara.cNvsIP = strDevIP.getBytes();
|
|
tLogonPara.iNvsPort = iDevPort;
|
|
tLogonPara.cUserName = strUserName.getBytes();
|
|
tLogonPara.cUserPwd = strUserPwd.getBytes();
|
|
tLogonPara.write();
|
|
m_iLogonID = NetClient1.Logon_V4(NVSSDK1.SERVER_NORMAL, tLogonPara.getPointer(), tLogonPara.size());
|
|
if (m_iLogonID < 0) {
|
|
System.err.println("Logon fail!(" + m_iLogonID + ")");
|
|
}
|
|
|
|
//The SDK login device is in asynchronous working mode and needs to wait for the login to succeed in the main callback
|
|
};
|
|
|
|
public void Logoff()
|
|
{
|
|
//logout
|
|
if (m_iLogonID >= 0) {
|
|
int iRet = NetClient1.Logoff(m_iLogonID);
|
|
m_iLogonID = -1;
|
|
System.out.println("Logoff(" + iRet + ")");
|
|
}
|
|
};
|
|
|
|
public void StartRecv()
|
|
{
|
|
Scanner scanInput = new Scanner(System.in);
|
|
System.out.println("Please enter the video channel number (starting at 0):");
|
|
int iChannelNo = scanInput.nextInt();
|
|
System.out.println("Please enter the stream type (0-main stream, 1-sub stream):");
|
|
int iStreamNO = scanInput.nextInt();
|
|
System.out.println("1-private tcp connect, 2-private udp connect, 3-private multicast connect, 6-rtsp stream via RTP-over-TCP, 7-rtsp stream via RTP-over-UDP");
|
|
System.out.println("8-rtsp stream via RTP-over-Multicast, 9-rtsps stream via SRTP-over-UDP, 10-rtsps stream via SRTP-over-Multicast");
|
|
System.out.println("Input net mode(default is 1-private tcp connect):");
|
|
int iNetMode = scanInput.nextInt();
|
|
NVSSDK1.CLIENTINFO clientInfo = new NVSSDK1.CLIENTINFO();
|
|
clientInfo.m_iChannelNo = iChannelNo;
|
|
clientInfo.m_iNetMode = iNetMode;
|
|
clientInfo.m_iStreamNO = iStreamNO;
|
|
clientInfo.m_iServerID = m_iLogonID;
|
|
clientInfo.m_iBufferCount = 20;
|
|
clientInfo.m_iDelayNum = 1;
|
|
clientInfo.m_iTimeout = 2000;
|
|
clientInfo.m_iTTL = 8;
|
|
clientInfo.write();
|
|
|
|
IntByReference piConnectID = new IntByReference();
|
|
int iRet = NetClient1.StartRecv_V4(piConnectID, clientInfo, cbkNvsData, null);
|
|
if (iRet < 0) {
|
|
m_iConnectID = -1;
|
|
System.err.println("StartRecv failed!(" + iRet + ")");
|
|
} else {
|
|
m_iConnectID = piConnectID.getValue();
|
|
//Turn on network original stream callback
|
|
NetClient1.StartCaptureData(m_iConnectID);
|
|
//Set the raw stream callback to receive audio and video bare stream data in the callback
|
|
NetClient1.SetRawFrameCallBack(m_iConnectID, cbkRawFrame, null);
|
|
//Set the decoded data callback
|
|
NetClient1.SetDecCallBack_V4(m_iConnectID, cbkDecYuv, null);
|
|
System.out.println("StartRecv success!(" + iRet + "), m_iConnectID(" + m_iConnectID + ")");
|
|
}
|
|
NetClient1.StartPlay(m_iConnectID,null,0);
|
|
|
|
};
|
|
|
|
public void StopRecv()
|
|
{
|
|
if(m_iConnectID >= 0) {
|
|
NetClient1.StopCaptureData(m_iConnectID);
|
|
int iRet = NetClient1.StopRecv(m_iConnectID);
|
|
m_iConnectID = -1;
|
|
System.out.println("StopRecv(" + iRet + ")");
|
|
}
|
|
};
|
|
|
|
public void StartRecord()
|
|
{
|
|
Scanner scanInput = new Scanner(System.in);
|
|
System.out.println("Please enter the recording type (0-sdv, 4-aac, 8-ps, 9-ts , 10-mp4):");
|
|
int iRecFileType = scanInput.nextInt();
|
|
String strFileName = new String("myRecordFile");
|
|
if (NVSSDK1.REC_FILE_TYPE_AVI == iRecFileType) {
|
|
strFileName += ".avi";
|
|
} else if (NVSSDK1.REC_FILE_TYPE_RAWAAC == iRecFileType) {
|
|
strFileName += ".aac";
|
|
} else if (NVSSDK1.REC_FILE_TYPE_PS == iRecFileType) {
|
|
strFileName += ".ps";
|
|
} else if (NVSSDK1.REC_FILE_TYPE_TS == iRecFileType) {
|
|
strFileName += ".ts";
|
|
}else if (NVSSDK1.REC_FILE_TYPE_ZFMP4 == iRecFileType) {
|
|
strFileName += ".mp4";
|
|
}else {
|
|
strFileName += ".sdv";
|
|
}
|
|
|
|
int iRet = NetClient1.StartCaptureFile(m_iConnectID, strFileName, iRecFileType);
|
|
if (NVSSDK1.RET_SUCCESS == iRet) {
|
|
System.out.println("StartCaptureFile success!(" + iRet + ")");
|
|
} else {
|
|
System.err.println("StartCaptureFile failed!(" + iRet + ")");
|
|
}
|
|
};
|
|
|
|
public void StopRecord()
|
|
{
|
|
int iRet = NetClient1.StopCaptureFile(m_iConnectID);
|
|
if (NVSSDK1.RET_SUCCESS == iRet) {
|
|
System.out.println("StopCaptureFile success!(" + iRet + ")");
|
|
} else {
|
|
System.err.println("StopCaptureFile failed!(" + iRet + ")");
|
|
}
|
|
};
|
|
|
|
public void PTZCtrl()
|
|
{
|
|
//Get the current serial port number
|
|
int iWorkMode = 0;
|
|
int iChannelNo = 0;
|
|
int iComNo = 1;
|
|
int iAddress = 0;
|
|
IntByReference piComNo = new IntByReference();
|
|
IntByReference piAddress = new IntByReference();
|
|
//Define pointers and open up memory space
|
|
Pointer pBuf = new Memory(64);
|
|
int iRet = NetClient1.GetDeviceType(m_iLogonID, iChannelNo, piComNo, piAddress, pBuf);
|
|
if (NVSSDK1.RET_SUCCESS == iRet) {
|
|
//Get byte array
|
|
byte[] byteArray = pBuf.getByteArray(0, 12);
|
|
//Convert to characters
|
|
String strProtocol = new String(byteArray);
|
|
iComNo = piComNo.getValue();
|
|
iAddress = piAddress.getValue();
|
|
System.out.println("GetDeviceType success! iChannelNo=" + iChannelNo + ", iComNo=" + iComNo
|
|
+ ", iAddress=" + iAddress + ", strProtocol=" + strProtocol);
|
|
} else {
|
|
System.err.println("GetDeviceType failed!! iRet=" + iRet);
|
|
return;
|
|
}
|
|
|
|
//Get the current serial port number working mode: 1--protocol mode, 2--transparent channel.
|
|
//The protocol mode is recommended, and the transparent channel mode available for protocol mode is not supported for some particularly old devices.
|
|
//Since the transparent channel involves the user group code, the logic is complicated. Here is not an example.
|
|
//If necessary, please refer to the MFC version of NetClient1Demo source code.
|
|
NVSSDK1.COMFORMAT tComFormat = new NVSSDK1.COMFORMAT();
|
|
tComFormat.iSize = tComFormat.size();
|
|
tComFormat.iComNo = iComNo;
|
|
tComFormat.write();
|
|
iRet = NetClient1.GetComFormat_V2(m_iLogonID, tComFormat);
|
|
if (NVSSDK1.RET_SUCCESS == iRet) {
|
|
iWorkMode = tComFormat.iWorkMode;
|
|
System.out.println("GetComFormat_V2 success! iComNo=" + iComNo + ", iWorkMode=" + iWorkMode);
|
|
} else {
|
|
System.err.println("GetComFormat_V2 failed!");
|
|
return;
|
|
}
|
|
|
|
//If the working mode is not the protocol mode, first set to the protocol mode.
|
|
if (1 != iWorkMode)
|
|
{
|
|
iWorkMode = 1;
|
|
tComFormat.write();
|
|
iRet = NetClient1.SetComFormat_V2(m_iLogonID, tComFormat);
|
|
if (NVSSDK1.RET_SUCCESS == iRet) {
|
|
System.out.println("SetComFormat_V2 success! iComNo=" + iComNo + ", iWorkMode=" + iWorkMode);
|
|
} else {
|
|
System.err.println("SetComFormat_V2 failed!");
|
|
return;
|
|
}
|
|
}
|
|
|
|
//PTZ control, detailed control code can be found in the header file provided by the SDK "ActionControl.h"
|
|
Scanner scanInput = new Scanner(System.in);
|
|
System.out.println("Please enter the direction of the dome rotation (up-1, down-2, left-3, right-4, stop -9, auto start -23, auto end -24):");
|
|
int iAction = scanInput.nextInt();
|
|
int iSpeed = 0;
|
|
if (NVSSDK1.PROTOCOL_MOVE_UP == iAction || NVSSDK1.PROTOCOL_MOVE_DOWN == iAction) {
|
|
System.out.println("Please enter the speed of the dome (0-100):");
|
|
iSpeed = scanInput.nextInt();
|
|
iRet = NetClient1.DeviceCtrlEx(m_iLogonID, iChannelNo, iAction, 0, iSpeed, 0);
|
|
} else if (NVSSDK1.PROTOCOL_MOVE_LEFT == iAction || NVSSDK1.PROTOCOL_MOVE_RIGHT == iAction) {
|
|
System.out.println("Please enter the speed of the dome (0-100):");
|
|
iSpeed = scanInput.nextInt();
|
|
iRet = NetClient1.DeviceCtrlEx(m_iLogonID, iChannelNo, iAction, iSpeed, 0, 0);
|
|
} else {
|
|
iRet = NetClient1.DeviceCtrlEx(m_iLogonID, iChannelNo, iAction, 0, 0, 0);
|
|
}
|
|
|
|
if (NVSSDK1.RET_SUCCESS == iRet) {
|
|
System.out.println("DeviceCtrlEx success! iAction=" + iAction + ", iSpeed=" + iSpeed);
|
|
} else {
|
|
System.err.println("DeviceCtrlEx failed!");
|
|
}
|
|
};
|
|
|
|
void SnapShot()
|
|
{
|
|
//Local capture needs to be decoded to capture, window handle is passed null, only decoding does not display
|
|
int iRet = NetClient1.StartPlay(m_iConnectID, null, 0);
|
|
if (NVSSDK1.RET_SUCCESS == iRet) {
|
|
System.out.println("StartPlay success! m_iConnectID=" + m_iConnectID);
|
|
} else {
|
|
System.err.println("StartPlay failed!");
|
|
return;
|
|
}
|
|
|
|
Scanner scanInput = new Scanner(System.in);
|
|
System.out.print("Please enter the capture type (0-YUV, 1-BMP, 2-JPG):");
|
|
int iType = scanInput.nextInt();
|
|
if (NVSSDK1.CAPTURE_PICTURE_TYPE_BMP == iType) {
|
|
int iSize = NetClient1.CapturePicture(m_iConnectID, NVSSDK1.CAPTURE_PICTURE_TYPE_BMP, "mySnapShot.bmp");
|
|
if(iSize <= 0) {
|
|
System.err.println("CapturePicture:CAPTURE_PICTURE_TYPE_BMP failed! iSize=" + iSize);
|
|
return;
|
|
} else {
|
|
System.out.println("CapturePicture:CAPTURE_PICTURE_TYPE_BMP success! iSize=" + iSize);
|
|
}
|
|
} else if (NVSSDK1.CAPTURE_PICTURE_TYPE_JPG == iType) {
|
|
int iSize = NetClient1.CapturePicture(m_iConnectID, NVSSDK1.CAPTURE_PICTURE_TYPE_JPG, "mySnapShot.jpg");
|
|
if(iSize <= 0) {
|
|
System.err.println("CapturePicture:CAPTURE_PICTURE_TYPE_JPG failed! iSize=" + iSize);
|
|
return;
|
|
} else {
|
|
System.out.println("CapturePicture:CAPTURE_PICTURE_TYPE_JPG success! iSize=" + iSize);
|
|
}
|
|
} else {
|
|
PointerByReference dataYuv = new PointerByReference();
|
|
int iSize = NetClient1.CapturePic(m_iConnectID, dataYuv);
|
|
if(iSize <= 0) {
|
|
System.err.println("CapturePicYuv failed! iSize=" + iSize);
|
|
return;
|
|
} else {
|
|
System.out.println("CapturePicYuv success! iSize=" + iSize);
|
|
//Save yuv capture data
|
|
SaveYuvData(dataYuv.getValue(), iSize);
|
|
}
|
|
}
|
|
|
|
//Stop decoding
|
|
iRet = NetClient1.StopPlay(m_iConnectID);
|
|
System.out.println("StopPlay(" + iRet + ")");
|
|
};
|
|
|
|
void fun3DLocate()
|
|
{
|
|
int iRet = NVSSDK1.RET_FAILED;
|
|
int iChannelNo = 0; //Sample code write test 0 channel, nvr device multi-channel use
|
|
Scanner scanInput = new Scanner(System.in);
|
|
NVSSDK1.FuncAbilityLevel tFuncAbilityLevel = new NVSSDK1.FuncAbilityLevel();
|
|
tFuncAbilityLevel.iSize = tFuncAbilityLevel.size();
|
|
tFuncAbilityLevel.iMainFuncType = NVSSDK1.MAIN_FUNC_TYPE_DOME_PARA;
|
|
tFuncAbilityLevel.iSubFuncType = 0;
|
|
tFuncAbilityLevel.write();
|
|
IntByReference piReturnByte = new IntByReference();
|
|
iRet = NetClient1.GetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_GET_FUNC_ABILITY, 0
|
|
, tFuncAbilityLevel.getPointer(), tFuncAbilityLevel.size(), piReturnByte);
|
|
if (NVSSDK1.RET_SUCCESS != iRet) {
|
|
System.err.println("GetDevConfig:NET_CLIENT_GET_FUNC_ABILITY failed! iRet=" + iRet);
|
|
return;
|
|
}
|
|
|
|
tFuncAbilityLevel.read(); //It's important here
|
|
|
|
//Convert to characters
|
|
byte[] strTmp = new byte[1];
|
|
strTmp[0] = tFuncAbilityLevel.cParam[0];
|
|
String strParam = new String(strTmp);
|
|
int iFuncPara = Integer.parseInt(strParam);
|
|
int iSupportNew3D = (iFuncPara & 2) >> 1; //Bit1 new 3D positioning protocol: 0-not supported, 1-supported
|
|
if (1 == iSupportNew3D) {
|
|
//Support new 3D positioning, precise positioning, new device support
|
|
NVSSDK1.Locate3DPosition t3dInfo = new NVSSDK1.Locate3DPosition();
|
|
t3dInfo.iBufSize = t3dInfo.size();
|
|
t3dInfo.iPointNum = 2;
|
|
|
|
NVSSDK1.vca_TPoint tPoint0 = new NVSSDK1.vca_TPoint();
|
|
NVSSDK1.vca_TPoint tPoint1 = new NVSSDK1.vca_TPoint();
|
|
System.out.println("Please enter the abscissa of the top left corner (parts ratio):");
|
|
tPoint0.iX = scanInput.nextInt();
|
|
System.out.println("Please enter the ordinate of the upper left corner (parts ratio):");
|
|
tPoint0.iY = scanInput.nextInt();
|
|
System.out.println("Please enter the abscissa of the lower right corner (parts ratio):");
|
|
tPoint1.iX = scanInput.nextInt();
|
|
System.out.println("Please enter the ordinate of the lower right corner (parts ratio):");
|
|
tPoint1.iY = scanInput.nextInt();
|
|
t3dInfo.tPoint[0] = tPoint0;
|
|
t3dInfo.tPoint[1] = tPoint1;
|
|
t3dInfo.write();
|
|
iRet = NetClient1.SendCommand(m_iLogonID, NVSSDK1.COMMAND_ID_3D_POSITION, iChannelNo, t3dInfo.getPointer(), t3dInfo.size());
|
|
if(NVSSDK1.RET_SUCCESS != iRet) {
|
|
System.err.println("SendCommand:COMMAND_ID_3D_POSITION failed! iRet=" + iRet);
|
|
} else {
|
|
System.out.println("SendCommand:COMMAND_ID_3D_POSITION success! iRet=" + iRet);
|
|
}
|
|
} else {
|
|
//Old 3D positioning
|
|
int iDevAddress = 0;
|
|
int iComNo = 1;
|
|
IntByReference piComNo = new IntByReference();
|
|
IntByReference piAddress = new IntByReference();
|
|
//Define pointers and open up memory space
|
|
Pointer pBuf = new Memory(64);
|
|
iRet = NetClient1.GetDeviceType(m_iLogonID, iChannelNo, piComNo, piAddress, pBuf);
|
|
if (NVSSDK1.RET_SUCCESS != iRet)
|
|
{
|
|
System.err.println("GetDeviceType failed! iRet=" + iRet);
|
|
return;
|
|
}
|
|
|
|
iComNo = piComNo.getValue();
|
|
iDevAddress = piAddress.getValue();
|
|
|
|
--iDevAddress;
|
|
if (iDevAddress < 0)
|
|
{
|
|
iDevAddress = 0;
|
|
}
|
|
|
|
int iFlip=0;
|
|
IntByReference piFlip = new IntByReference();
|
|
iRet = NetClient1.GetSensorFlip(m_iLogonID, iChannelNo, piFlip);
|
|
if (NVSSDK1.RET_SUCCESS != iRet)
|
|
{
|
|
System.err.println("GetSensorFlip failed! iRet=" + iRet);
|
|
return;
|
|
}
|
|
|
|
iFlip = piFlip.getValue();
|
|
System.out.println("Please enter the abscissa of the top left corner (parts ratio):");
|
|
int iLeft = scanInput.nextInt();
|
|
System.out.println("Please enter the ordinate of the upper left corner (parts ratio):");
|
|
int iRight = scanInput.nextInt();
|
|
System.out.println("Please enter the abscissa of the lower right corner (parts ratio):");
|
|
int iTop = scanInput.nextInt();
|
|
System.out.println("Please enter the ordinate of the lower right corner (parts ratio):");
|
|
int iBottom = scanInput.nextInt();
|
|
|
|
int L = 0, R = 0, U = 0, D = 0, W = 0, T = 0;
|
|
NVSSDK1.vca_TPoint tVideo = new NVSSDK1.vca_TPoint();
|
|
tVideo.iX = (iLeft + iRight) / 2;
|
|
tVideo.iY = (iTop + iBottom)/2;
|
|
if (iLeft < iRight) {
|
|
T = 1;
|
|
W = 0;
|
|
} else {
|
|
T = 0;
|
|
W = 1;
|
|
}
|
|
|
|
int ox = tVideo.iX, oy = tVideo.iY;
|
|
if (1 == iFlip) {
|
|
ox = iRight - ox;
|
|
oy = iBottom - oy;
|
|
}
|
|
|
|
if(ox < iRight / 2) {
|
|
L=1;
|
|
R=0;
|
|
} else {
|
|
L=0;
|
|
R=1;
|
|
}
|
|
|
|
if(oy < iBottom / 2) {
|
|
U=1;
|
|
D=0;
|
|
} else {
|
|
U=0;
|
|
D=1;
|
|
}
|
|
|
|
byte[] cDecBuf = new byte[9];
|
|
cDecBuf[0] = (byte)0xf6;
|
|
cDecBuf[1] = (byte)8;
|
|
cDecBuf[2] = (byte)iDevAddress;
|
|
cDecBuf[3] = (byte)0x52;
|
|
cDecBuf[4] = (byte)(R + L * 2 + U * 4 + D * 8 + W * 16 + T * 32);
|
|
cDecBuf[5] = (byte)(Math.abs(2 * ox - iRight) * 63 / iRight);
|
|
cDecBuf[6] = (byte)(Math.abs(2 * oy - iBottom) * 63/ iBottom);
|
|
cDecBuf[7] = (byte)((iRight - iLeft) * 0x3f / iRight);
|
|
cDecBuf[8] = (byte)((cDecBuf[1] + cDecBuf[2] + cDecBuf[3] + cDecBuf[4] + cDecBuf[5] + cDecBuf[6] + cDecBuf[7]) & 0x7f);
|
|
|
|
int iChannelType = 0;
|
|
IntByReference piChannelType = new IntByReference();
|
|
iRet = NetClient1.GetChannelProperty(m_iLogonID, iChannelNo, NVSSDK1.GENERAL_CMD_GET_CHANNEL_TYPE, piChannelType.getPointer(), 4);
|
|
if (NVSSDK1.RET_SUCCESS == iRet ) {
|
|
iChannelType = piChannelType.getValue();
|
|
if (NVSSDK1.CHANNEL_TYPE_DIGITAL == iChannelType) {
|
|
iRet = NetClient1.DigitalChannelSend(m_iLogonID, iChannelNo, cDecBuf, cDecBuf.length);
|
|
if(NVSSDK1.RET_SUCCESS == iRet) {
|
|
System.out.println("DigitalChannelSend success! cDecBuf=" + cDecBuf);
|
|
} else {
|
|
System.err.println("DigitalChannelSend failed! iRet=" + iRet);
|
|
}
|
|
//When the channel attribute is judged to be the nvr digital channel, the command is sent to the current logic, otherwise the following logic is taken.
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Non-nvr digital channels take this logic
|
|
iRet = NetClient1.ComSend(m_iLogonID, cDecBuf, cDecBuf.length, iComNo);
|
|
if(NVSSDK1.RET_SUCCESS == iRet) {
|
|
System.out.println("ComSend success! " + Integer.toHexString(cDecBuf[0]) + "," + Integer.toHexString(cDecBuf[1])
|
|
+ "," + Integer.toHexString(cDecBuf[2]) + "," + Integer.toHexString(cDecBuf[3])
|
|
+ "," + Integer.toHexString(cDecBuf[4]) + "," + Integer.toHexString(cDecBuf[5])
|
|
+ "," + Integer.toHexString(cDecBuf[6]) + "," + Integer.toHexString(cDecBuf[7])
|
|
+ "," + Integer.toHexString(cDecBuf[8]));
|
|
} else {
|
|
System.err.println("DigitalChannelSend failed! iRet=" + iRet);
|
|
}
|
|
}
|
|
};
|
|
|
|
void Get_Set_Monitor()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
NVSSDK1.ElevatorMonitor tParam = new NVSSDK1.ElevatorMonitor();
|
|
tParam.write();
|
|
|
|
System.out.println("NetClient1.GetDevConfig NET_CLIENT_ELEVATOR_MONITOR :");
|
|
IntByReference pRet = new IntByReference();
|
|
int iRet = NetClient1.GetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_ELEVATOR_MONITOR, 0, tParam.getPointer(), tParam.size(),pRet);
|
|
if (iRet < 0)
|
|
{
|
|
System.err.println("NetClient1.GetDevConfig NET_CLIENT_ELEVATOR_MONITOR failed! Logon id = " + m_iLogonID);
|
|
}
|
|
else
|
|
{
|
|
tParam.read();
|
|
System.out.println( "iStartShockThreshold = " + tParam.iStartShockThreshold);
|
|
System.out.println( "iMoveSpeed = " + tParam.iMoveSpeed);
|
|
System.out.println( "iBodyInductionMode = " + tParam.iBodyInductionMode);
|
|
System.out.println( "iEbikeDetectEnable = " + tParam.iEbikeDetectEnable);
|
|
System.out.println( "iSwaySensitivity = " + tParam.iSwaySensitivity);
|
|
System.out.println( "iTopLimit = " + tParam.iTopLimit);
|
|
System.out.println( "iBottomLimit = " + tParam.iBottomLimit);
|
|
System.out.println( "iMainFloor = " + tParam.iMainFloor);
|
|
System.out.println( "iLevelingMode = " + tParam.iLevelingMode);
|
|
|
|
System.out.println( "iOpenDoorMode = " + tParam.iOpenDoorMode);
|
|
System.out.println( "iMaintenanceMode = " + tParam.iMaintenanceMode);
|
|
System.out.println( "iCrashStopMode = " + tParam.iCrashStopMode);
|
|
System.out.println( "iPIRMode = " + tParam.iPIRMode);
|
|
}
|
|
|
|
tParam.iMainFloor = 9;
|
|
tParam.write();
|
|
System.out.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_MONITOR :");
|
|
iRet = NetClient1.SetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_ELEVATOR_MONITOR, 0, tParam.getPointer(), tParam.size());
|
|
if (iRet < 0)
|
|
{
|
|
System.err.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_MONITOR failed! Logon id = " + m_iLogonID);
|
|
}
|
|
else
|
|
{
|
|
System.out.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_MONITOR SUCCESS");
|
|
}
|
|
|
|
}
|
|
void Get_Set_StoreyInfo()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
NVSSDK1.ElevatorStoreyInfo tParam = new NVSSDK1.ElevatorStoreyInfo();
|
|
tParam.write();
|
|
|
|
IntByReference pRet = new IntByReference();
|
|
int iRet = NetClient1.GetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_ELEVATOR_STOREYINFO, 0, tParam.getPointer(), tParam.size(),pRet);
|
|
if (iRet < 0)
|
|
{
|
|
System.err.println("NetClient1.GetDevConfig NET_CLIENT_ELEVATOR_STOREYINFO failed! Logon id = " + m_iLogonID);
|
|
}
|
|
else
|
|
{
|
|
tParam.read();
|
|
System.out.println( "iStartFloor = " + tParam.iStartFloor);
|
|
System.out.println( "iEndFloor = " + tParam.iEndFloor);
|
|
|
|
for (int i = tParam.iStartFloor; i < tParam.iEndFloor; i++)
|
|
{
|
|
System.out.println( "Floor = " + i + " Height = " + tParam.iFloorHeight[i - NVSSDK1.MIN_LOOR_LEVING]);
|
|
}
|
|
}
|
|
|
|
tParam.iStartFloor = 2;
|
|
tParam.write();
|
|
System.out.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_STOREYINFO :");
|
|
iRet = NetClient1.SetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_ELEVATOR_STOREYINFO, 0, tParam.getPointer(), tParam.size());
|
|
if (iRet < 0)
|
|
{
|
|
System.err.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_STOREYINFO failed! Logon id = " + m_iLogonID);
|
|
}
|
|
else
|
|
{
|
|
System.out.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_STOREYINFO SUCCESS");
|
|
}
|
|
}
|
|
|
|
void Get_Set_Statistics()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
NVSSDK1.ElevatorStatistics tParam = new NVSSDK1.ElevatorStatistics();
|
|
tParam.write();
|
|
|
|
IntByReference pRet = new IntByReference();
|
|
int iRet = NetClient1.GetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_ELEVATOR_STATISTICS, 0, tParam.getPointer(), tParam.size(),pRet);
|
|
if (iRet < 0)
|
|
{
|
|
System.err.println("NetClient1.GetDevConfig NET_CLIENT_ELEVATOR_STATISTICS failed! Logon id = " + m_iLogonID);
|
|
}
|
|
else
|
|
{
|
|
tParam.read();
|
|
System.out.println( "iChannelNo = " + tParam.iChannelNo);
|
|
System.out.println( "iBindBrakeCn = " + tParam.iBindBrakeCn);
|
|
System.out.println( "iOpenDoorCn = " + tParam.iOpenDoorCn);
|
|
System.out.println( "iOperationMileage = " + tParam.iOperationMileage);
|
|
}
|
|
|
|
tParam.iBindBrakeCn = 12;
|
|
tParam.write();
|
|
System.out.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_STATISTICS :");
|
|
iRet = NetClient1.SetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_ELEVATOR_STATISTICS, 0, tParam.getPointer(), tParam.size());
|
|
if (iRet < 0)
|
|
{
|
|
System.err.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_STATISTICS failed! Logon id = " + m_iLogonID);
|
|
}
|
|
else
|
|
{
|
|
System.out.println("NetClient1.SetDevConfig NET_CLIENT_ELEVATOR_STATISTICS SUCCESS");
|
|
}
|
|
}
|
|
|
|
void Get_State()
|
|
{
|
|
// TODO: Add your control notification handler code here
|
|
NVSSDK1.ElevatorState tParam = new NVSSDK1.ElevatorState();
|
|
tParam.write();
|
|
|
|
IntByReference pRet = new IntByReference();
|
|
int iRet = NetClient1.GetDevConfig(m_iLogonID, NVSSDK1.NET_CLIENT_ELEVATOR_STATE, 0, tParam.getPointer(), tParam.size(),pRet);
|
|
if (iRet < 0)
|
|
{
|
|
System.err.println("NetClient1.GetDevConfig NET_CLIENT_ELEVATOR_STATE failed! Logon id = " + m_iLogonID);
|
|
}
|
|
else
|
|
{
|
|
System.out.println("NetClient1.GetDevConfig NET_CLIENT_ELEVATOR_STATE :");
|
|
tParam.read();
|
|
System.out.println( "iChannelNo = " + tParam.iChannelNo);
|
|
System.out.println( "iFloor = " + tParam.iFloor);
|
|
System.out.println( "iDirection = " + tParam.iDirection);
|
|
System.out.println( "iSpeed = " + tParam.iSpeed);
|
|
System.out.println( "iTemperature = " + tParam.iTemperature);
|
|
System.out.println( "iHumidity = " + tParam.iHumidity);
|
|
System.out.println( "iBindBrake = " + tParam.iBindBrake);
|
|
System.out.println( "iMaintenance = " + tParam.iMaintenance);
|
|
System.out.println( "iLeveling = " + tParam.iLeveling);
|
|
|
|
System.out.println( "iOpenDoor = " + tParam.iOpenDoor);
|
|
System.out.println( "iCrashStop = " + tParam.iCrashStop);
|
|
System.out.println( "iBodyInduction = " + tParam.iBodyInduction);
|
|
System.out.println( "iMainFloor = " + tParam.iMainFloor);
|
|
}
|
|
}
|
|
|
|
public static final int CMD_QUIT = -1;
|
|
public static final int CMD_LOGON = 0;
|
|
public static final int CMD_LOGOFF = 1;
|
|
public static final int CMD_STARTRECV = 2;
|
|
public static final int CMD_STOPRECV = 3;
|
|
public static final int CMD_STARTRECORD = 4;
|
|
public static final int CMD_STOPRECORD = 5;
|
|
public static final int CMD_PTZCTRL = 6;
|
|
public static final int CMD_SNAPSHOT = 7;
|
|
public static final int CMD_3DLOCATE = 8;
|
|
public static final int CMD_MONITOR = 9;
|
|
public static final int CMD_STOREYINFO = 10;
|
|
public static final int CMD_STATICS = 11;
|
|
public static final int CMD_STATE = 12;
|
|
public void makeOptCmd()
|
|
{
|
|
m_mapOptCmd.put("Quit", CMD_QUIT);
|
|
m_mapOptCmd.put("q", CMD_QUIT);
|
|
|
|
m_mapOptCmd.put("Logon", CMD_LOGON);
|
|
m_mapOptCmd.put("0", CMD_LOGON);
|
|
|
|
m_mapOptCmd.put("Logoff", CMD_LOGOFF);
|
|
m_mapOptCmd.put("1", CMD_LOGOFF);
|
|
|
|
m_mapOptCmd.put("StartRecv", CMD_STARTRECV);
|
|
m_mapOptCmd.put("2", CMD_STARTRECV);
|
|
|
|
m_mapOptCmd.put("StopRecv", CMD_STOPRECV);
|
|
m_mapOptCmd.put("3", CMD_STOPRECV);
|
|
|
|
m_mapOptCmd.put("StartRecord", CMD_STARTRECORD);
|
|
m_mapOptCmd.put("4", CMD_STARTRECORD);
|
|
|
|
m_mapOptCmd.put("StopRecord", CMD_STOPRECORD);
|
|
m_mapOptCmd.put("5", CMD_STOPRECORD);
|
|
|
|
m_mapOptCmd.put("PTZCtrl", CMD_PTZCTRL);
|
|
m_mapOptCmd.put("6", CMD_PTZCTRL);
|
|
|
|
m_mapOptCmd.put("SnapShot", CMD_SNAPSHOT);
|
|
m_mapOptCmd.put("7", CMD_SNAPSHOT);
|
|
|
|
m_mapOptCmd.put("3DLocate", CMD_3DLOCATE);
|
|
m_mapOptCmd.put("8", CMD_3DLOCATE);
|
|
|
|
m_mapOptCmd.put("Get_Set_Monitor", CMD_MONITOR);
|
|
m_mapOptCmd.put("9", CMD_MONITOR);
|
|
|
|
m_mapOptCmd.put("Get_Set_StoreyInfo", CMD_STOREYINFO);
|
|
m_mapOptCmd.put("10", CMD_STOREYINFO);
|
|
|
|
m_mapOptCmd.put("Get_Set_Statistics", CMD_STATICS);
|
|
m_mapOptCmd.put("11", CMD_STATICS);
|
|
|
|
m_mapOptCmd.put("Get_State", CMD_STATE);
|
|
m_mapOptCmd.put("12", CMD_STATE);
|
|
}
|
|
|
|
public void doMajorWork()
|
|
{
|
|
Scanner scanInput = new Scanner(System.in);
|
|
int iCmd = -1;
|
|
String strCmd = new String();
|
|
boolean blQuit = false;
|
|
while(!blQuit)
|
|
{
|
|
System.out.println("***********************************************************");
|
|
System.out.println(
|
|
"[q]Quit \n"
|
|
+ "[0]Logon [1]Logoff \n"
|
|
+ "[2]StartRecv [3]StopRecv \n"
|
|
+ "[4]StartRecord [5]StopRecord \n"
|
|
+ "[6]PTZCtrl [7]SnapShot \n"
|
|
+ "[8]3DLocate [9]Monitor \n"
|
|
+ "[10]StoreyInfo [11]Statistics \n"
|
|
+ "[12]State ");
|
|
System.out.println("***********************************************************");
|
|
|
|
System.out.println("Please input your correct command: ");
|
|
strCmd = scanInput.next();
|
|
iCmd = m_mapOptCmd.get(strCmd);
|
|
switch(iCmd)
|
|
{
|
|
case CMD_QUIT: //q
|
|
{
|
|
System.out.println("Goodbye, my friend!");
|
|
blQuit = true;
|
|
break;
|
|
}
|
|
case CMD_LOGON:
|
|
{
|
|
Logon();
|
|
break;
|
|
}
|
|
case CMD_LOGOFF:
|
|
{
|
|
Logoff();
|
|
break;
|
|
}
|
|
case CMD_STARTRECV:
|
|
{
|
|
StartRecv();
|
|
break;
|
|
}
|
|
case CMD_STOPRECV:
|
|
{
|
|
StopRecv();
|
|
break;
|
|
}
|
|
case CMD_STARTRECORD:
|
|
{
|
|
StartRecord();
|
|
break;
|
|
}
|
|
case CMD_STOPRECORD:
|
|
{
|
|
StopRecord();
|
|
break;
|
|
}
|
|
case CMD_PTZCTRL:
|
|
{
|
|
PTZCtrl();
|
|
break;
|
|
}
|
|
case CMD_SNAPSHOT:
|
|
{
|
|
SnapShot();
|
|
break;
|
|
}
|
|
case CMD_MONITOR:
|
|
{
|
|
Get_Set_Monitor();
|
|
break;
|
|
}
|
|
case CMD_STOREYINFO:
|
|
{
|
|
Get_Set_StoreyInfo();
|
|
break;
|
|
}
|
|
case CMD_STATICS:
|
|
{
|
|
Get_Set_Statistics();
|
|
break;
|
|
}
|
|
case CMD_STATE:
|
|
{
|
|
Get_State();
|
|
break;
|
|
}
|
|
case CMD_3DLOCATE:
|
|
{
|
|
fun3DLocate();
|
|
break;
|
|
}
|
|
default:
|
|
{
|
|
System.out.println("Command \"" + strCmd + "\" not found!");
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void main(String args[])
|
|
{
|
|
System.out.println("VideoCtrlDemo!");
|
|
VideoCtrl tVideoCtrl = new VideoCtrl();
|
|
|
|
//Initialize the SDK
|
|
tVideoCtrl.sdkInit();
|
|
|
|
//Call the SDK interface to implement business functions
|
|
tVideoCtrl.makeOptCmd();
|
|
tVideoCtrl.doMajorWork();
|
|
|
|
//Deinitialize the SDK and clean up the SDK resources
|
|
tVideoCtrl.sdkUnInit();
|
|
}
|
|
}
|