首页 > 其他分享 >腾讯云点播怎么获取不同清晰度的视频地址

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

时间:2024-01-27 20:06:05浏览次数:23  
标签:JsonProperty 点播 String int Object private 腾讯 清晰度 public

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

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

 

编写后台代码接收回调传来的不同清晰度的视频地址,下面以 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;
    }
}

 



标签:JsonProperty,点播,String,int,Object,private,腾讯,清晰度,public
From: https://blog.51cto.com/u_14163972/9444212

相关文章

  • 幻兽帕鲁有多火?!腾讯云联机服务器卖爆啦!4核16G官方推荐,限时特惠(内含教程)
    腾讯云4核16G仅需66元/月,适合用来搭建幻兽帕鲁服务器,支持32人专用服务器要自建幻兽帕鲁(Palworld)的服务器,可以采取以下步骤:获取服务器软件:首先,您需要在Steam库中搜索"PalworldDedicatedServer",或者在"工具"选项中选择进行搜索以找到该软件。下载并安装服务器软件:找到并下载所......
  • fastadmin api 腾讯云upload上传图片
    /***腾讯云Cos上传文件*上传分片*合并分片*@paramFile$file文件流*/publicfunctionuploadCos(){if(!Auth::isModuleAllow()){$this->error("请登录后再进行操作");}$config=......
  • 腾讯云存储获沙利文「2023年中国云存储市场报告」评测第一
    近日,国际权威调研机构沙利文联合头豹研究院正式发布《2023年中国云存储解决方案市场报告》,腾讯云存储位居国内厂商第一位,获增长指数和创新指数双第一,入选中国云存储解决方案市场“领导者”阵营。报告认为,腾讯云是云存储解决方案市场的领导者,聚焦用户实际应用需求,不断进行技术打......
  • 2024年1月中国数据库排行榜: OPOT 组合续写贺新年,达梦、腾讯发力迎升势
    2024年开局,墨天轮中国数据库流行度排行火热出炉,292个国产数据库齐聚榜单。整体来看,榜单前十整体变化不大,“O-P-O”格局稳固,前五位名次未发生变动。但新年伊始,各家数据库热度上升迅猛,分数差距也逐渐缩小,这微妙的波动折射出激烈的竞争态势,行业内涌动充分活力。本月排行榜解读文章......
  • 使用腾讯AIDesign的设计LOGO
         腾讯AIDesign免费开放全部功能,支持logo的智能设计、调优、VI生成、下载。推广期间,每个用户每日可免费下载10款logo及其衍生品,可下载内容包括:高清无水印的彩色logo图片、标准墨稿、标准反色稿、名片设计稿。     我们抱着试试,输入chinacreator字符,生成一些LOGO试......
  • 通过腾讯网页快捷登录协议截取 QQ邮箱 的 QQClientkey / QQKey 教程
    最近发现之前的老代码已经不能获取QQ邮箱的Clientkey,经过一番调试后发现QQ邮箱更新了获取的流程,所以决定重新发布一篇文章,废话不多,直接上教程,喜欢的朋友记得点赞加关注。step1首先需要获取到Qrsig的值(流程已更改)RequestURL:https://ssl.ptlogin2.qq.com/ptqrshow?appid......
  • 腾讯大牛深入浅出详解云原生
    腾讯大牛深入浅出详解云原生 本文介绍目前业界非常火热的“云原生(CloudNative)”相关知识结构,包括微服务、DevOps、持续交付、服务网格、Serverless等相关知识点。“云原生”通过提供一套完整的技术体系和方法论来指导我们在云环境下,在系统功能越来越复杂的情况下,还能够做到敏......
  • 腾讯云如何申请免费ssl证书以及如何使用
    一、申请证书 1.登录控制台https://console.cloud.tencent.com/ssl 2.点击申请免费证书 3.填写相关信息,注意网站用什么域名就写什么不要只写一级域名 4.去域名购买服务商设置域名解析 这些内容刚才的申请后跳转的页面会有,对应填写即可稍等待一会,几秒十几秒,点击域名......
  • 腾讯云取消免费10G CDN流量包:免费CDN时代结束
    关注卢松松,会经常给你分享一些我的经验和观点。免费送了7-8年的腾讯云10G免费流量包,从2024年开始,停止赠送了!自此,国内绝大多数互联网大厂的CDN都开收费了!大概从2016年开始,腾讯云为了抢夺CDN客户,推出了“每月免费送10GCDN流量包”活动,所有帐号每个月会自动获得10G流量包。你别看这......
  • 关于腾讯地图geolocation.getLocation 经常定位失败,定位时间过长的解决方法
    今天遇到个项目,腾讯地图定位出现问题,导致地图无法呈现出最近的目标 这是正常的效果,之前一直出现贵州等地点的信息,查看控制台的网络后,发现腾讯的定位失败,要么就是定位时间过长,要20S左右,但是换EDGE浏览器却能正常加载,除了EDGE浏览器都会出现这个问题。随后我去查阅腾讯地图接口......