package com.ycl.api.YS.liveview.information;
|
|
import com.sun.jna.Pointer;
|
import com.ycl.api.YS.NetDemo;
|
import com.ycl.api.YS.lib.NetDEVSDKLib.NETDEV_AUDIO_SAMPLE_PARAM_S;
|
|
import javax.swing.*;
|
import java.io.File;
|
import java.io.FileInputStream;
|
import java.io.IOException;
|
import java.io.InputStream;
|
|
/**
|
*
|
* @introduction LiveVoice
|
* @description Support IPC/NVR/VMS
|
*/
|
public class LiveVoice {
|
/**
|
*
|
* @introduction Choose voice file
|
* @description Choose local voice file
|
*
|
*/
|
public static void chooseVoiceFile() {
|
String path=null;
|
JFileChooser jfierchoose=new JFileChooser();
|
jfierchoose.setFileSelectionMode(JFileChooser.FILES_ONLY);
|
if(JFileChooser.APPROVE_OPTION==jfierchoose.showOpenDialog(NetDemo.jPanelliveVoice)) {
|
path=jfierchoose.getSelectedFile().getPath();
|
}
|
if(path==null||path.equals("")) {
|
System.out.println("File is null");
|
return;
|
}
|
String newpath=null;
|
try {
|
newpath=path.substring(path.lastIndexOf("."));
|
}catch(Exception y) {
|
JOptionPane.showMessageDialog(null, "File is not exist");
|
return;
|
}
|
|
if(newpath==null||newpath.equals("")) {
|
System.out.println("File is null");
|
return;
|
}
|
if(!(newpath.equals(".pcm"))) {
|
JOptionPane.showMessageDialog(null, "Only support pcm file");
|
return;
|
}else {
|
JOptionPane.showMessageDialog(null, "Choose file is ok");
|
NetDemo.jTextFieldLiveVoice.setText(path);
|
JOptionPane.showMessageDialog(null, "Automatic acquistion");
|
NetDemo.jButtonLiveGetVoice.doClick();
|
}
|
|
}
|
|
/**
|
*
|
* @introduction Start voice acquisition
|
* @description Only support pcm file
|
*
|
*/
|
public static void voiceAcquisition() {
|
if(null == NetDemo.lpUserID) {
|
JOptionPane.showMessageDialog(null, "Please Login device first. error code"+NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
if(NetDemo.ChannelID == 0){
|
JOptionPane.showMessageDialog(null, "Please select the channel first.");
|
return;
|
}
|
|
String path=NetDemo.jTextFieldLiveVoice.getText();
|
if(path==null||path.equals("")) {
|
JOptionPane.showMessageDialog(null, "File is null");
|
return;
|
}
|
|
String fileSuffix=null;
|
try {
|
fileSuffix=path.substring(path.lastIndexOf("."));
|
}catch(Exception t) {
|
JOptionPane.showMessageDialog(null, "File is not exist");
|
return;
|
}
|
if(!(fileSuffix.equals(".pcm"))) {
|
JOptionPane.showMessageDialog(null, "File type is error, only support pcm file");
|
return;
|
}
|
|
Pointer lpPlayHandle= NetDemo.netdevsdk.NETDEV_StartInputVoiceSrv(NetDemo.lpUserID, NetDemo.ChannelID);
|
File file=new File(path);
|
try {
|
InputStream input=new FileInputStream(file);
|
int dwBufLen=640;
|
byte[] szBuff = new byte[dwBufLen];
|
NETDEV_AUDIO_SAMPLE_PARAM_S pstVoiceParam=new NETDEV_AUDIO_SAMPLE_PARAM_S();
|
while(input.read(szBuff,0,dwBufLen)!=-1) {
|
boolean bRet= NetDemo.netdevsdk.NETDEV_InputVoiceData(lpPlayHandle,szBuff, dwBufLen,pstVoiceParam);
|
if(!bRet) {
|
input.close();
|
JOptionPane.showMessageDialog(null, "InputVoice fail");
|
NetDemo.jTextFieldLiveVoice.setText(null);
|
System.out.printf("NETDEV_InputVoiceData failed:%d\n", NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
Thread.sleep(40);
|
}
|
|
input.close();
|
JOptionPane.showMessageDialog(null, "Success completed");
|
NetDemo.jTextFieldLiveVoice.setText(null);
|
boolean bRet=NetDemo.netdevsdk.NETDEV_StopInputVoiceSrv(lpPlayHandle);
|
if(bRet != true) {
|
System.out.printf("NETDEV_StopInputVoiceSrv failed, error:" + NetDemo.netdevsdk.NETDEV_GetLastError());
|
return;
|
}
|
} catch (IOException | InterruptedException e) {
|
JOptionPane.showMessageDialog(null, "File does not exist or has been destoryed");
|
NetDemo.jTextFieldLiveVoice.setText(null);
|
}
|
}
|
}
|