diff --git a/src/main/java/com/syzb/video/service/admin/AdminVideoInfoService.java b/src/main/java/com/syzb/video/service/admin/AdminVideoInfoService.java index 484b2a0..e2ff35c 100644 --- a/src/main/java/com/syzb/video/service/admin/AdminVideoInfoService.java +++ b/src/main/java/com/syzb/video/service/admin/AdminVideoInfoService.java @@ -535,7 +535,7 @@ public class AdminVideoInfoService { if (isSoldOut) { //下架修改直播状态和推流状态 video.setLiveStatus(VideoLiveStatus.HAS_ENDED.value); - videoCommonService.endVideo(null, new VideoLive(id, VideoLiveStatus.HAS_ENDED.value, now)); + videoCommonService.endVideo(null, new VideoLive(id, VideoLiveStatus.HAS_ENDED.value, now), false); } if (VideoLiveStatus.LIVING.value.equals(videoInDb.getLiveStatus())) { video.setRealEndTime(now); diff --git a/src/main/java/com/syzb/video/service/common/VideoCommonService.java b/src/main/java/com/syzb/video/service/common/VideoCommonService.java index 5429bdd..6c0dc2d 100644 --- a/src/main/java/com/syzb/video/service/common/VideoCommonService.java +++ b/src/main/java/com/syzb/video/service/common/VideoCommonService.java @@ -1,6 +1,7 @@ package com.syzb.video.service.common; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.exceptions.ExceptionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -215,7 +216,7 @@ public class VideoCommonService { Integer totalReadCount = adminVideoInteractionService.queryInteractionCount(v.getId(), VideoUserRecordType.READ, null, null, false); entity.setLiveNum(totalReadCount); videoLiveMapper.updateById(entity); - endVideo(cacheMap, v); + endVideo(cacheMap, v, true); adminVideoQuestionService.stopByVideoId(v.getId()); }); } @@ -248,11 +249,21 @@ public class VideoCommonService { * @param cacheMap 缓存 * @param video 直播信息 */ - public void endVideo(Map cacheMap, VideoLive video) { + public void endVideo(Map cacheMap, VideoLive video, boolean isTask) { // 清除直播状态缓存 videoCacheService.clearVideoInfoCache(video.getId(), cacheMap); - // 已结束,中断投顾推流 - videoCloudService.dropLiveStream(video.getId()); + // 已结束,禁推投顾推流 + try { + if (isTask) { + videoCloudService.stopRecordTask(video); + videoCloudService.forbidLiveStream(video.getId().toString()); + } else { + videoCloudService.dropLiveStream(video.getId()); + } + } catch(Exception e) { + // 忽略异常 + LoggerUtil.error("结束直播失败:", ExceptionUtil.stacktraceToString(e)); + } // 直播结束通知 videoMessageService.publishLiveStatusNotification(video.getId(), VideoLiveStatus.HAS_ENDED.value); // 直播状态推送(pc)