腾讯云点播怎么获取不同清晰度的视频地址

首先确定是否已设置回调地址

编写后台代码接收回调传来的不同清晰度的视频地址,下面以 720和1080清晰度为例:

复制代码
package com.wkk.test.wkk_test.controller;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.wkk.test.wkk_test.domain.TencentVideoOnDemandJsonData;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@RestController
@RequestMapping("notify")
public class NotifyController {

    Integer height720 = 720;
    Integer height1080 = 1080;

    @PostMapping(value = "/tencentVideoOnDemand")
    public void payNotify(HttpServletRequest request, HttpServletResponse response,@RequestBody String jsonObject) throws Exception{

        TencentVideoOnDemandJsonData jsonData = null;
        String height720VideoUrl = "";
        String height1080VideoUrl = "";
        try {
            ObjectMapper objectMapper = new ObjectMapper();
            jsonData = objectMapper.readValue(jsonObject, TencentVideoOnDemandJsonData.class);
            if (jsonData.getEventType().equals("ProcedureStateChanged")){
                TencentVideoOnDemandJsonData.ProcedureStateChangeEvent event = jsonData.getProcedureStateChangeEvent();
                String fileId = event.getFileId();
                TencentVideoOnDemandJsonData.MediaProcessResultSet[] mediaProcessResultSet = event.getMediaProcessResultSet();

                for (TencentVideoOnDemandJsonData.MediaProcessResultSet processResultSet : mediaProcessResultSet) {
                    TencentVideoOnDemandJsonData.TranscodeTask transcodeTask = processResultSet.getTranscodeTask();
                    TencentVideoOnDemandJsonData.Output output = transcodeTask.getOutput();
                    int height = output.getHeight();
                    if (height==height720){
                        height720VideoUrl = output.getUrl();
                    }else if (height==height1080){
                        height1080VideoUrl = output.getUrl();
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("腾讯云回调");
        System.out.println("height720VideoUrl: "+height720VideoUrl); // 720 清晰度视频地址
        System.out.println("height1080VideoUrl: "+height1080VideoUrl); // 1080 清晰度视频地址

    }

}

对应的解析json的实体类代码:

复制代码
package com.wkk.test.wkk_test.domain;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

@Data
public class TencentVideoOnDemandJsonData {
    @JsonProperty("EventType")
    private String eventType;
    @JsonProperty("FileUploadEvent")
    private Object fileUploadEvent;
    @JsonProperty("ProcedureStateChangeEvent")
    private ProcedureStateChangeEvent procedureStateChangeEvent;
    @JsonProperty("FileDeleteEvent")
    private Object fileDeleteEvent;
    @JsonProperty("PullCompleteEvent")
    private Object pullCompleteEvent;
    @JsonProperty("EditMediaCompleteEvent")
    private Object editMediaCompleteEvent;
    @JsonProperty("ComposeMediaCompleteEvent")
    private Object composeMediaCompleteEvent;
    @JsonProperty("WechatPublishCompleteEvent")
    private Object wechatPublishCompleteEvent;
    @JsonProperty("TranscodeCompleteEvent")
    private Object transcodeCompleteEvent;
    @JsonProperty("ConcatCompleteEvent")
    private Object concatCompleteEvent;
    @JsonProperty("ClipCompleteEvent")
    private Object clipCompleteEvent;
    @JsonProperty("CreateImageSpriteCompleteEvent")
    private Object createImageSpriteCompleteEvent;
    @JsonProperty("SnapshotByTimeOffsetCompleteEvent")
    private Object snapshotByTimeOffsetCompleteEvent;
    @JsonProperty("WechatMiniProgramPublishEvent")
    private Object wechatMiniProgramPublishEvent;
    @JsonProperty("WechatMiniProgramPublishCompleteEvent")
    private Object wechatMiniProgramPublishCompleteEvent;
    @JsonProperty("RemoveWatermarkCompleteEvent")
    private Object removeWatermarkCompleteEvent;
    @JsonProperty("RestoreMediaCompleteEvent")
    private Object restoreMediaCompleteEvent;
    @JsonProperty("ForbidMediaCompleteEvent")
    private Object forbidMediaCompleteEvent;
    @JsonProperty("SplitMediaCompleteEvent")
    private Object splitMediaCompleteEvent;
    @JsonProperty("RebuildMediaCompleteEvent")
    private Object rebuildMediaCompleteEvent;
    @JsonProperty("FastClipMediaCompleteEvent")
    private Object fastClipMediaCompleteEvent;
    @JsonProperty("BackUpMediaCompleteEvent")
    private Object backUpMediaCompleteEvent;
    @JsonProperty("ReviewAudioVideoCompleteEvent")
    private Object reviewAudioVideoCompleteEvent;
    @JsonProperty("DescribeFileAttributesCompleteEvent")
    private Object describeFileAttributesCompleteEvent;
    @JsonProperty("ExtractTraceWatermarkCompleteEvent")
    private Object extractTraceWatermarkCompleteEvent;
    @JsonProperty("ExtractCopyRightWatermarkCompleteEvent")
    private Object extractCopyRightWatermarkCompleteEvent;
    @JsonProperty("QualityInspectCompleteEvent")
    private Object qualityInspectCompleteEvent;
    @JsonProperty("QualityEnhanceCompleteEvent")
    private Object qualityEnhanceCompleteEvent;
    @JsonProperty("ReduceMediaBitrateCompleteEvent")
    private Object reduceMediaBitrateCompleteEvent;

    @Data
    public static class ProcedureStateChangeEvent {
        @JsonProperty("TaskId")
        private String taskId;
        @JsonProperty("Status")
        private String status;
        @JsonProperty("ErrCode")
        private int errCode;
        @JsonProperty("Message")
        private String message;
        @JsonProperty("FileId")
        private String fileId;
        @JsonProperty("FileName")
        private String fileName;
        @JsonProperty("FileUrl")
        private String fileUrl;
        @JsonProperty("MetaData")
        private MetaData metaData;
        @JsonProperty("AiAnalysisResultSet")
        private Object[] aiAnalysisResultSet;
        @JsonProperty("AiRecognitionResultSet")
        private Object[] aiRecognitionResultSet;
        @JsonProperty("AiContentReviewResultSet")
        private Object[] aiContentReviewResultSet;
        @JsonProperty("MediaProcessResultSet")
        private MediaProcessResultSet[] mediaProcessResultSet;
        @JsonProperty("SessionContext")
        private String sessionContext;
        @JsonProperty("SessionId")
        private String sessionId;
        @JsonProperty("TasksPriority")
        private int tasksPriority;
        @JsonProperty("TasksNotifyMode")
        private String tasksNotifyMode;
        @JsonProperty("Operator")
        private String operator;
        @JsonProperty("OperationType")
        private String operationType;
    }

    @Data
    public static class MetaData {
        @JsonProperty("AudioDuration")
        private double audioDuration;
        @JsonProperty("AudioStreamSet")
        private AudioStream[] audioStreamSet;
        @JsonProperty("Bitrate")
        private int bitrate;
        @JsonProperty("Container")
        private String container;
        @JsonProperty("Duration")
        private double duration;
        @JsonProperty("Height")
        private int height;
        @JsonProperty("Md5")
        private String md5;
        @JsonProperty("Rotate")
        private int rotate;
        @JsonProperty("Size")
        private long size;
        @JsonProperty("VideoDuration")
        private double videoDuration;
        @JsonProperty("VideoStreamSet")
        private VideoStream[] videoStreamSet;
        @JsonProperty("Width")
        private int width;
    }

    @Data
    public static class MediaProcessResultSet {
        @JsonProperty("Type")
        private String type;
        @JsonProperty("TranscodeTask")
        private TranscodeTask transcodeTask;
        @JsonProperty("AnimatedGraphicTask")
        private Object animatedGraphicTask;
        @JsonProperty("SnapshotByTimeOffsetTask")
        private Object snapshotByTimeOffsetTask;
        @JsonProperty("SampleSnapshotTask")
        private Object sampleSnapshotTask;
        @JsonProperty("ImageSpriteTask")
        private Object imageSpriteTask;
        @JsonProperty("CoverBySnapshotTask")
        private Object coverBySnapshotTask;
        @JsonProperty("AdaptiveDynamicStreamingTask")
        private Object adaptiveDynamicStreamingTask;
    }

    @Data
    public static class AudioStream {
        @JsonProperty("Bitrate")
        private int bitrate;
        @JsonProperty("Codec")
        private String codec;
        @JsonProperty("Codecs")
        private String codecs;
        @JsonProperty("Loudness")
        private int loudness;
        @JsonProperty("SamplingRate")
        private int samplingRate;
    }

    @Data
    public static class VideoStream {
        @JsonProperty("Bitrate")
        private int bitrate;
        @JsonProperty("Codec")
        private String codec;
        @JsonProperty("CodecTag")
        private String codecTag;
        @JsonProperty("Codecs")
        private String codecs;
        @JsonProperty("DynamicRangeInfo")
        private DynamicRangeInfo dynamicRangeInfo;
        @JsonProperty("Fps")
        private int fps;
        @JsonProperty("Height")
        private int height;
        @JsonProperty("Width")
        private int width;
    }

    @Data
    public static class DynamicRangeInfo {
        @JsonProperty("HDRType")
        private String hdrType;
        @JsonProperty("Type")
        private String type;
    }

    @Data
    public static class TranscodeTask {
        @JsonProperty("Status")
        private String status;
        @JsonProperty("ErrCode")
        private int errCode;
        @JsonProperty("ErrCodeExt")
        private String errCodeExt;
        @JsonProperty("Message")
        private String message;
        @JsonProperty("Progress")
        private int progress;
        @JsonProperty("BeginProcessTime")
        private String beginProcessTime;
        @JsonProperty("FinishTime")
        private String finishTime;
        @JsonProperty("Input")
        private Input input;
        @JsonProperty("Output")
        private Output output;
    }

    @Data
    public static class Input {
        @JsonProperty("Definition")
        private int definition;
        @JsonProperty("TraceWatermark")
        private TraceWatermark traceWatermark;
        @JsonProperty("CopyRightWatermark")
        private CopyRightWatermark copyRightWatermark;
        @JsonProperty("WatermarkSet")
        private Object[] watermarkSet;
        @JsonProperty("HeadTailSet")
        private Object[] headTailSet;
        @JsonProperty("MosaicSet")
        private Object[] mosaicSet;
        @JsonProperty("StartTimeOffset")
        private int startTimeOffset;
        @JsonProperty("EndTimeOffset")
        private int endTimeOffset;
    }

    @Data
    public static class Output {
        @JsonProperty("Url")
        private String url;
        @JsonProperty("Size")
        private int size;
        @JsonProperty("Container")
        private String container;
        @JsonProperty("Height")
        private int height;
        @JsonProperty("Width")
        private int width;
        @JsonProperty("Bitrate")
        private int bitrate;
        @JsonProperty("Md5")
        private String md5;
        @JsonProperty("Duration")
        private double duration;
        @JsonProperty("VideoStreamSet")
        private VideoStream[] videoStreamSet;
        @JsonProperty("AudioStreamSet")
        private AudioStream[] audioStreamSet;
        @JsonProperty("Definition")
        private int definition;
        @JsonProperty("DigitalWatermarkType")
        private String digitalWatermarkType;
        @JsonProperty("CopyRightWatermarkText")
        private String copyRightWatermarkText;
        @JsonProperty("VMAF")
        private int vmaf;
    }

    @Data
    public static class TraceWatermark {
        @JsonProperty("Definition")
        private int definition;
        @JsonProperty("DefinitionForBStream")
        private int definitionForBStream;
        @JsonProperty("Switch")
        private String switchStr;
    }

    @Data
    public static class CopyRightWatermark {
        @JsonProperty("Text")
        private String text;
        @JsonProperty("StartTimeOffset")
        private int startTimeOffset;
        @JsonProperty("EndTimeOffset")
        private int endTimeOffset;
    }
}
相关推荐
workbuddy小能手4 天前
腾讯云ADP Agent Portal vs 自建智能体:架构选型对比
架构·云计算·腾讯云
thinking_talk4 天前
2026中国MongoDB云服务厂商能力榜:选型对比与效能评估
数据库·mongodb·腾讯云
倔强的石头1064 天前
腾讯云一键部署OpenClaw打造QQ机器人
机器人·腾讯云
EdgeOne边缘安全加速平台7 天前
EdgeOne Web 防护×AI 升级:让 AI 既参与攻击识别,也参与误报纠错
前端·人工智能·腾讯云·edgeone
2601_961875247 天前
法考资料全套2026|客观题|主观题|资料已整理
阿里云·云计算·腾讯云·azure·七牛云存储·csdn开发云·火山引擎
佛系豪豪吖7 天前
一台 Lighthouse 撑起 AI 全栈工作流:OpenClaw + 腾讯云生态深度实战
人工智能·经验分享·云计算·腾讯云·授权网关
云服务器代理商8 天前
腾讯云香港服务器选择指南:延迟优势、配置价格与开通思路
服务器·云计算·腾讯云·腾讯云服务器·香港节点·腾讯云国际·腾讯云海外
华万通信king9 天前
腾讯云ADP Agent Portal入门:从零搭建企业级AI智能体
腾讯云·腾讯云ai代码助手·adp
翼龙云_cloud9 天前
腾讯云代理商:2026如何使用腾讯云CloudBase AI Builder 搭建个人博客?
人工智能·云计算·腾讯云·ai智能体
翼龙云_cloud10 天前
腾讯云代理商:为OpenClaw配置云开发CloudBase Skill 全自动开发上线
云计算·腾讯云·ai智能体