1.g722 转码播放
public static void startVoiceG722Trans(int mr, String filePath) {
File file = new File(filePath);
try (FileInputStream inputStream = new FileInputStream(file)) {
int buffLen = 1280;
byte[] buffer = new byte[buffLen];
long currFileLen = 0;
int readLen;
Memory pIB = new Memory(buffLen);
while (currFileLen < file.length()) {
readLen = inputStream.read(buffer);
pIB.write(0, buffer, 0, readLen);
currFileLen += readLen;
Memory pOutBuffer = new Memory(buffLen);
HCNetSDK.NET_DVR_AUDIOENC_INFO enc_info = new HCNetSDK.NET_DVR_AUDIOENC_INFO();
enc_info.in_frame_size = buffLen;
Pointer encoder = hCNetSDK.NET_DVR_InitG722Encoder(enc_info);
HCNetSDK.NET_DVR_AUDIOENC_PROCESS_PARAM param = new HCNetSDK.NET_DVR_AUDIOENC_PROCESS_PARAM();
param.in_buf = pIB;
param.out_buf = pOutBuffer;
param.out_frame_size = 80;
boolean frame = hCNetSDK.NET_DVR_EncodeG722Frame(encoder, param);
if (!frame) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
System.out.println("G722音频编码失败!iErr = " + iErr);
}
System.out.println(frame);
hCNetSDK.NET_DVR_ReleaseG722Encoder(encoder);
if (!frame) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
System.out.println("G722音频编码失败!iErr = " + iErr);
}
boolean sendData = hCNetSDK.NET_DVR_VoiceComSendData(mr, pOutBuffer.getByteArray(0, 80), 80);
if (!sendData) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
System.out.println("转发语音数据!iErr = " + iErr);
}
Thread.sleep(20);
System.out.println("eg=" + frame + " sendData=" + sendData);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("读取完成");
}
2.g711 转码播放
public static void startVoiceG711Trans(int mr, String filePath) {
File file = new File(filePath);
try (FileInputStream inputStream = new FileInputStream(file)) {
int buffLen = 320;
byte[] buffer = new byte[buffLen];
long currFileLen = 0;
int readLen;
Memory pIB = new Memory(buffLen);
while (currFileLen < file.length()) {
readLen = inputStream.read(buffer);
pIB.write(0, buffer, 0, readLen);
currFileLen += readLen;
Memory pOutBuffer = new Memory(buffLen);
HCNetSDK.NET_DVR_AUDIOENC_INFO enc_info = new HCNetSDK.NET_DVR_AUDIOENC_INFO();
enc_info.in_frame_size = buffLen;
Pointer encoder = hCNetSDK.NET_DVR_InitG711Encoder(enc_info.getPointer());
HCNetSDK.NET_DVR_AUDIOENC_PROCESS_PARAM param = new HCNetSDK.NET_DVR_AUDIOENC_PROCESS_PARAM();
param.in_buf = pIB;
param.out_buf = pOutBuffer;
param.out_frame_size = 160;
param.g711_type = 0;
boolean frame = hCNetSDK.NET_DVR_EncodeG711Frame(encoder, param);
if (!frame) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
System.out.println("G711音频编码失败!iErr = " + iErr);
}
System.out.println(frame);
frame = hCNetSDK.NET_DVR_ReleaseG711Encoder(encoder);
if (!frame) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
System.out.println("G711音频编码失败!iErr = " + iErr);
}
boolean sendData = hCNetSDK.NET_DVR_VoiceComSendData(mr, pOutBuffer.getByteArray(0, 160), 160);
if (!sendData) {
int iErr = hCNetSDK.NET_DVR_GetLastError();
System.out.println("转发语音数据!iErr = " + iErr);
}
Thread.sleep(20);
System.out.println("eg=" + frame + " sendData=" + sendData);
}
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("读取完成");
}