腾讯云实时音视频录制回调接口响应

事件消息通知协议

网络协议

  • 请求:HTTP POST 请求,包体内容为 JSON,每一种消息的具体包体内容参见后文。
  • 应答:HTTP STATUS CODE = 200,服务端忽略应答包具体内容,为了协议友好,建议客户应答内容携带 JSON: {"code":0}

通知可靠性

事件通知服务具备重试能力,重试间隔为60秒,总计重试3次。为了避免重试对您的服务器以及网络带宽造成冲击,请保持正常回包。触发重试条件如下:

  • 长时间(20 秒)未回包应答。
  • 应答 HTTP STATUS 不为200。
@PostMapping("/receive")
    public ResponseEntity> receive(@RequestBody Map mediaMap) {

        // 应答:HTTP STATUS CODE = 200,服务端忽略应答包具体内容,为了协议友好,建议应答内容携带 JSON: {"code":0} 通知可靠性
        Map responseMap = new HashMap<>(16);
        responseMap.put("code", 0);

        String eventType = mediaMap.get("event_type").toString();
        // 如果非录制文件消息就不处理
        if (!MEDIA_TYPE.equals(eventType)) {
            return new ResponseEntity>(responseMap, HttpStatus.OK);
        }
        String timetableId = mediaMap.get("stream_id").toString();
        String fileId = mediaMap.get("file_id").toString();
        if (timetableId.lastIndexOf(IGNORE_MEDIA_TYPE) != -1) {
            this.deleteMedia(fileId);
            return new ResponseEntity<>(responseMap, HttpStatus.OK);
        }


        String videoUrl = mediaMap.get("video_url").toString();
        String streamParam = mediaMap.get("stream_param").toString();

        String fileSize = mediaMap.get("file_size").toString();
        String fileFormat = mediaMap.get("file_format").toString();
        String startTime = mediaMap.get("start_time").toString();
        String endTime = mediaMap.get("end_time").toString();
        String[] paramsArray = streamParam.split("&");
        Map map = new HashMap<>(paramsArray.length);
        for (String params : paramsArray) {
            String[] param = params.split("=");
            map.put(param[0], param[1]);
        }
        String roomId = map.get("groupid");
        String userIdBase64 = map.get("userid");

        Base64.Decoder decoder = Base64.getDecoder();
        String lecturerId = null;
        try {
            lecturerId = new String(decoder.decode(userIdBase64), "UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }

        return new ResponseEntity<>(responseMap, HttpStatus.OK);

    }

 

你可能感兴趣的:(Java,java)