优化语音对讲级联,目前等待zlm支持openRTPServer仅收音频
This commit is contained in:
@@ -332,49 +332,34 @@ public class ZLMHttpHookListener {
|
||||
}
|
||||
}else if ("broadcast".equals(param.getApp())){
|
||||
// 语音对讲推流 stream需要满足格式deviceId_channelId
|
||||
if (param.isRegist() && param.getStream().indexOf("_") > 0) {
|
||||
String[] streamArray = param.getStream().split("_");
|
||||
if (streamArray.length == 2) {
|
||||
String deviceId = streamArray[0];
|
||||
String channelId = streamArray[1];
|
||||
Device device = deviceService.getDevice(deviceId);
|
||||
if (device != null) {
|
||||
if (param.isRegist()) {
|
||||
if (audioBroadcastManager.exit(deviceId, channelId)) {
|
||||
// 直接推流
|
||||
SendRtpItem sendRtpItem = redisCatchStorage.querySendRTPServer(null, null, param.getStream(), null);
|
||||
if (sendRtpItem == null) {
|
||||
// TODO 可能数据错误,重新开启语音通道
|
||||
}else {
|
||||
JSONObject jsonObject = zlmrtpServerFactory.startSendRtp(mediaInfo, sendRtpItem);
|
||||
if (jsonObject != null && jsonObject.getInteger("code") == 0 ) {
|
||||
logger.info("[语音喊话] 自动推流成功, device: {}, channel: {}", device.getDeviceId(), channelId);
|
||||
}else {
|
||||
logger.info("[语音喊话] 推流失败, 结果: {}", jsonObject);
|
||||
}
|
||||
|
||||
}
|
||||
}else {
|
||||
// 开启语音喊话通道
|
||||
try {
|
||||
playService.audioBroadcastCmd(device, channelId, mediaInfo, param.getApp(), param.getStream(),60, false, (msg)->{
|
||||
logger.info("[语音喊话] 通道建立成功, device: {}, channel: {}", deviceId, channelId);
|
||||
});
|
||||
} catch (InvalidArgumentException | ParseException | SipException e) {
|
||||
logger.error("[命令发送失败] 语音喊话: {}", e.getMessage());
|
||||
}
|
||||
}
|
||||
}else {
|
||||
// 流注销
|
||||
playService.stopAudioBroadcast(deviceId, channelId);
|
||||
}
|
||||
} else{
|
||||
logger.info("[语音对讲] 未找到设备:{}", deviceId);
|
||||
}
|
||||
}else {
|
||||
logger.info("[语音喊话] 推流格式有误, 格式为: broadcast/设备编号_通道编号 ");
|
||||
}
|
||||
}
|
||||
if (param.getStream().indexOf("_") > 0) {
|
||||
String[] streamArray = param.getStream().split("_");
|
||||
if (streamArray.length == 2) {
|
||||
String deviceId = streamArray[0];
|
||||
String channelId = streamArray[1];
|
||||
Device device = deviceService.getDevice(deviceId);
|
||||
if (device != null) {
|
||||
if (param.isRegist()) {
|
||||
if (audioBroadcastManager.exit(deviceId, channelId)) {
|
||||
playService.stopAudioBroadcast(deviceId, channelId);
|
||||
}
|
||||
// 开启语音对讲通道
|
||||
try {
|
||||
playService.audioBroadcastCmd(device, channelId, mediaInfo, param.getApp(), param.getStream(), 60, false, (msg)->{
|
||||
logger.info("[语音对讲] 通道建立成功, device: {}, channel: {}", deviceId, channelId);
|
||||
});
|
||||
} catch (InvalidArgumentException | ParseException | SipException e) {
|
||||
logger.error("[命令发送失败] 语音对讲: {}", e.getMessage());
|
||||
}
|
||||
}else {
|
||||
// 流注销
|
||||
playService.stopAudioBroadcast(deviceId, channelId);
|
||||
}
|
||||
} else{
|
||||
logger.info("[语音对讲] 未找到设备:{}", deviceId);
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if ("talk".equals(param.getApp())){
|
||||
// 语音喊话推流 stream需要满足格式deviceId_channelId
|
||||
if (param.isRegist() && param.getStream().indexOf("_") > 0) {
|
||||
|
||||
Reference in New Issue
Block a user