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

事件消息通知协议

网络协议

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

通知可靠性

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

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

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

        String eventType = mediaMap.get("event_type").toString();
        // 如果非录制文件消息就不处理
        if (!MEDIA_TYPE.equals(eventType)) {
            return new ResponseEntity<Map<String, Integer>>(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<String, String> 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);

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值