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

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

编写后台代码接收回调传来的不同清晰度的视频地址,下面以 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;
    }
}
相关推荐
skywalk81632 天前
如何在FreeBSD的Linux仿真环境中运行GUI命令
云计算·腾讯云
行者-全栈开发4 天前
WorkBuddy + CodeBuddy 双引擎协作:电商运维日报自动化的完整实现
腾讯云·codebuddy·运维自动化·workbuddy·日报生成·claw远程操控·ppt自动化
小鱼儿电子6 天前
58-基于物联网的老年人医嘱联动健康监测装置
stm32·物联网·腾讯云·健康手环
翼龙云_cloud10 天前
腾讯云代理商: 腾讯云qGPU怎么破解算力浪费难题?
云计算·腾讯云·qgpu
咕泡科技11 天前
AI 教培行业新标杆:咕泡科技以腾讯云 CDE× 湖师大校企 × 具身智能构建三重唯一性壁垒
人工智能·科技·腾讯云
腾讯云大数据13 天前
腾讯云大数据计算智能:从结构化 SQL 到多模态 AI Workload 的融合范式
大数据·人工智能·腾讯云
OpenCloudOS13 天前
OpenCloudOS 理事会更新 | 腾讯云、海光助力建设 AI Infra 开源开放底座
人工智能·开源·腾讯云
腾讯云大数据13 天前
腾讯云TBDS面向AI时代的多模态智算平台,助力企业AI转型
人工智能·云计算·腾讯云·tbds
一次旅行14 天前
DeepSeek-V4 原厂直供模型即将登陆腾讯云!峰谷定价详解 + 实战调用指南
人工智能·腾讯云·ai编程
Try_again_115 天前
WorkBuddy 卸载重装+数据迁移全记录:用 Junction 解决工作空间路径锁定问题
人工智能·ai·腾讯云