Jelajahi Sumber

云端录制,未完成

zouxuan 3 tahun lalu
induk
melakukan
74ffcd9e1a

+ 10 - 0
mec-im/src/main/java/com/ym/controller/LiveRoomController.java

@@ -1,10 +1,13 @@
 package com.ym.controller;
 
+import com.alibaba.fastjson.JSONObject;
+import com.ym.pojo.RecordNotify;
 import com.ym.service.LiveRoomService;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
@@ -31,4 +34,11 @@ public class LiveRoomController {
     public Object destroyLiveRoom(String roomId) throws Exception {
         return liveRoomService.destroyLiveRoom(roomId);
     }
+
+    @ApiOperation("录制结果回调")
+    @RequestMapping(value = "/recordSync")
+    public void recordSync(@RequestBody String body){
+        RecordNotify recordNotify = JSONObject.parseObject(body, RecordNotify.class);
+        liveRoomService.recordSync(recordNotify);
+    }
 }

+ 5 - 0
mec-im/src/main/java/com/ym/pojo/RecordConfig.java

@@ -13,4 +13,9 @@ public class RecordConfig {
     Integer renderMode = 1;
     String hostUserId;
     String hostStreamId;
+
+    public RecordConfig(Integer speakerId) {
+        this.hostUserId = speakerId.toString();
+        this.hostStreamId = speakerId.toString();
+    }
 }

+ 35 - 0
mec-im/src/main/java/com/ym/pojo/RecordNotify.java

@@ -0,0 +1,35 @@
+package com.ym.pojo;
+
+import lombok.Data;
+
+@Data
+public class RecordNotify {
+	Long timestamp;
+	Integer type;
+	String appKey;
+	String recordId;
+	String roomId;
+	String sessionId;
+	String userId;
+	Integer mode;
+	RecordNotifyOutput output;
+	RecordNotifyConfig config;
+	String extra;
+	Integer code;
+	String errorMessage;
+
+	@Override
+	public String toString() {
+		return "RecordNotify{" +
+				"recordId='" + recordId + '\'' +
+				", roomId='" + roomId + '\'' +
+				", sessionId='" + sessionId + '\'' +
+				", userId='" + userId + '\'' +
+				", output=" + output +
+				", config=" + config +
+				", extra='" + extra + '\'' +
+				", code=" + code +
+				", errorMessage='" + errorMessage + '\'' +
+				'}';
+	}
+}

+ 27 - 0
mec-im/src/main/java/com/ym/pojo/RecordNotifyConfig.java

@@ -0,0 +1,27 @@
+package com.ym.pojo;
+
+import lombok.Data;
+
+@Data
+public class RecordNotifyConfig {
+    Integer trigger;
+
+    Integer mixLayout;
+
+    Integer slicesMin;
+
+    String audioFormat;
+
+    String videoFormat;
+
+    @Override
+    public String toString() {
+        return "RecordNotifyConfig{" +
+                "trigger=" + trigger +
+                ", mixLayout=" + mixLayout +
+                ", slicesMin=" + slicesMin +
+                ", audioFormat='" + audioFormat + '\'' +
+                ", videoFormat='" + videoFormat + '\'' +
+                '}';
+    }
+}

+ 19 - 0
mec-im/src/main/java/com/ym/pojo/RecordNotifyOutput.java

@@ -0,0 +1,19 @@
+package com.ym.pojo;
+
+import lombok.Data;
+
+@Data
+public class RecordNotifyOutput {
+    String fileName;
+    Long audioSample;
+    String videoResoulation;
+
+    @Override
+    public String toString() {
+        return "RecordNotifyOutput{" +
+                "fileName='" + fileName + '\'' +
+                ", audioSample=" + audioSample +
+                ", videoResoulation='" + videoResoulation + '\'' +
+                '}';
+    }
+}

+ 12 - 1
mec-im/src/main/java/com/ym/service/Impl/LiveRoomServiceImpl.java

@@ -3,10 +3,13 @@ package com.ym.service.Impl;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.http.HttpHelper;
+import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomDao;
+import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.im.IMHelper;
 import com.ym.pojo.IMApiResultInfo;
 import com.ym.pojo.RecordConfig;
+import com.ym.pojo.RecordNotify;
 import com.ym.service.LiveRoomService;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -33,6 +36,8 @@ public class LiveRoomServiceImpl implements LiveRoomService {
     private HttpHelper httpHelper;
     @Autowired
     private RedissonClient redissonClient;
+    @Autowired
+    private ImLiveBroadcastRoomDao imLiveBroadcastRoomDao;
 
     /**
      * 创建房间-聊天室
@@ -83,7 +88,8 @@ public class LiveRoomServiceImpl implements LiveRoomService {
     public void startRecord(String roomId) throws Exception {
         JSONObject paramJson = new JSONObject();
         paramJson.put("sessionId",getRoomSessionId(roomId));
-        paramJson.put("config",new RecordConfig());
+        ImLiveBroadcastRoom imLiveBroadcastRoom = imLiveBroadcastRoomDao.selectById(roomId);
+        paramJson.put("config",new RecordConfig(imLiveBroadcastRoom.getSpeakerId()));
         String body = paramJson.toJSONString();
         HttpURLConnection conn = httpHelper.createIMRtcPostHttpConnection("/rtc/record/start.json", "application/json",roomId);
         httpHelper.setBodyParameter(body, conn);
@@ -93,6 +99,11 @@ public class LiveRoomServiceImpl implements LiveRoomService {
         }
     }
 
+    @Override
+    public void recordSync(RecordNotify recordNotify) {
+        log.info("recordSync paramJson{}",recordNotify);
+    }
+
     public String getRoomSessionId(String roomId){
         RBucket<String> bucket = redissonClient.getBucket("sessionId:" + roomId);
         String sessionId = bucket.get();

+ 10 - 0
mec-im/src/main/java/com/ym/service/LiveRoomService.java

@@ -1,6 +1,7 @@
 package com.ym.service;
 
 import com.ym.pojo.IMApiResultInfo;
+import com.ym.pojo.RecordNotify;
 
 /**
  * @author hgw
@@ -20,4 +21,13 @@ public interface LiveRoomService {
     * @date 2022/2/25 10:00
     */
     void startRecord(String roomId) throws Exception;
+
+    /**
+    * @description: 录制状态回调
+     * @param recordNotify
+    * @return void
+    * @author zx
+    * @date 2022/2/25 11:49
+    */
+    void recordSync(RecordNotify recordNotify);
 }