Merge branch 'master' into dev/abl支持
# Conflicts: # src/main/java/com/genersoft/iot/vmp/vmanager/gb28181/play/PlayController.java
This commit is contained in:
@@ -98,4 +98,5 @@ public interface IDeviceChannelService {
|
||||
|
||||
void updateChannelGPS(Device device, DeviceChannel deviceChannel, MobilePosition mobilePosition);
|
||||
|
||||
void stopPlay(String deviceId, String channelId);
|
||||
}
|
||||
|
||||
@@ -68,4 +68,5 @@ public interface IPlayService {
|
||||
|
||||
void getSnap(String deviceId, String channelId, String fileName, ErrorCallback errorCallback);
|
||||
|
||||
void stopPlay(Device device, String channelId);
|
||||
}
|
||||
|
||||
@@ -353,4 +353,9 @@ public class DeviceChannelServiceImpl implements IDeviceChannelService {
|
||||
redisCatchStorage.sendMobilePositionMsg(jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopPlay(String deviceId, String channelId) {
|
||||
channelMapper.stopPlay(deviceId, channelId);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1693,4 +1693,26 @@ public class PlayServiceImpl implements IPlayService {
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void stopPlay(Device device, String channelId) {
|
||||
InviteInfo inviteInfo = inviteStreamService.getInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, device.getDeviceId(), channelId);
|
||||
if (inviteInfo == null) {
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "点播未找到");
|
||||
}
|
||||
if (InviteSessionStatus.ok == inviteInfo.getStatus()) {
|
||||
try {
|
||||
logger.info("[停止点播] {}/{}", device.getDeviceId(), channelId);
|
||||
cmder.streamByeCmd(device, channelId, inviteInfo.getStream(), null, null);
|
||||
} catch (InvalidArgumentException | SipException | ParseException | SsrcTransactionNotFoundException e) {
|
||||
logger.error("[命令发送失败] 停止点播, 发送BYE: {}", e.getMessage());
|
||||
throw new ControllerException(ErrorCode.ERROR100.getCode(), "命令发送失败: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
inviteStreamService.removeInviteInfoByDeviceAndChannel(InviteSessionType.PLAY, device.getDeviceId(), channelId);
|
||||
storager.stopPlay(device.getDeviceId(), channelId);
|
||||
channelService.stopPlay(device.getDeviceId(), channelId);
|
||||
if (inviteInfo.getStreamInfo() != null) {
|
||||
mediaServerService.closeRTPServer(inviteInfo.getStreamInfo().getMediaServerId(), inviteInfo.getStream());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user