Sfoglia il codice sorgente

Merge branch 'dev_20230222_live' into master_saas

Eric 2 anni fa
parent
commit
b3f338c5ed

+ 22 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -32,6 +32,7 @@ import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomData;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoomMember;
 import com.ym.mec.biz.dal.entity.ImLiveRoomBlack;
+import com.ym.mec.biz.dal.entity.ImLiveRoomVideo;
 import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.page.LiveRoomGoodsOrderQueryInfo;
 import com.ym.mec.biz.dal.vo.*;
@@ -108,7 +109,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     private ImLiveRoomReservationService imLiveRoomReservationService;
     @Autowired
     private ImLiveRoomBlackService imLiveRoomBlackService;
-
+    @Autowired
+    private ImLiveRoomVideoService imLiveRoomVideoService;
     @Autowired
     private LivePluginContext livePluginContext;
 
@@ -659,11 +661,23 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             LivePluginService pluginService = livePluginContext.getPluginService(room.getServiceProvider());
             pluginService.sendChatRoomMessage(message);
             log.info("roomDestroy>>>> FORCED_OFFLINE {}", JSONObject.toJSONString(message));
+
             //销毁直播间
             pluginService.chatRoomDestroy(roomUid);
+
+            // 录制任务Id
             if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
-                pluginService.rtcRoomRecordStop(getStreamId(roomUid, speakerId));
+
+                List<String> collect = imLiveRoomVideoService.lambdaQuery()
+                        .eq(ImLiveRoomVideo::getRoomUid, roomUid).list().stream()
+                        .map(ImLiveRoomVideo::getRecordId).distinct().collect(Collectors.toList());
+
+                for (String taskId : collect) {
+                    // 删除录制任务
+                    pluginService.rtcRoomRecordStop(taskId);
+                }
             }
+
 //            imFeignService.destroyLiveRoom(roomUid);
             log.info("roomDestroy>>>> destroyLiveRoom {}", JSONObject.toJSONString(message));
         } catch (Exception e) {
@@ -1507,11 +1521,16 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             // 腾讯云直播,提前生成录制规则
             if (room.getServiceProvider().equals(TencentCloudLivePlugin.PLUGIN_NAME)) {
 
+                DateTime now = DateTime.now();
+
                 RTCRequest.RecordStart recordStart = RTCRequest.RecordStart.builder()
                         .streamName(MessageFormat.format("{0}_{1}", room.getRoomUid(), room.getSpeakerId().toString()))
+                        .extra("")
+                        .startTime(now.toDateTime().getMillis())
+                        .endTime(now.plusDays(1).toDateTime().getMillis())
                         .build();
 
-                // 生成录制规则
+                // 生成录制任务
                 pluginService.rtcRoomRecordStart(recordStart);
             }