(HTTP形式回调)续上一篇上传视频,发现了一个问题当你阿里云那边设置了视频转码,如果上传完成后你立即去获取视频信息,会返回你视频还在转码中无法获取视频信息,看了阿里的回调api 写回调事件,当视频回调转码成功后再去填充数据里的视频信息

需注意如果你设置了回调URL鉴权后,他会发两个"X-VOD-TIMESTAMP",“X-VOD-SIGNATURE” 这样做是防止别人恶意刷你的链接

URL鉴权api链接

回调事件类型api链接

上代码:

AliyunVideoUtils.callbackUrl// 这个是你设置回调的url
AliyunVideoUtils.privateKey  //这个是你设置鉴权让你预设的签名Key~
public void callback(@RequestBody String body, HttpServletRequest request, HttpServletResponse response) {try {String vodTimestamp = request.getHeader("X-VOD-TIMESTAMP");   //UNIX时间戳,整形正数,固定长度10,1970年1月1日以来的秒数,表示回调请求发起时间~String vodSignature = request.getHeader("X-VOD-SIGNATURE"); //签名字符串,为32位MD5值String sign = DigestUtils.md5Hex(AliyunVideoUtils.callbackUrl + "|" + vodTimestamp + "|" + AliyunVideoUtils.privateKey); //以这种形式拼接起来 下面进行对比 if (!sign.equalsIgnoreCase(vodSignature)) { //进行对比   此操作是防止别人通过 你的链接刷数据logger.warn("阿里云视频回调签名不通过!X-VOD-TIMESTAM={},X-VOD-SIGNATURE={}", vodTimestamp, vodSignature);} else {logger.info("阿里云视频回调:{}", body);if (StringUtils.isNotBlank(body)) {// 判断事件,如此事件是视频转码完成,根据videoId 来获取视频信息来填充数据库Map<String, Object> map = jsonToMap(body);// 此方法是将返回来的json字符串 转为map   下面有这方法//断送事件类型 有很多个事件类型  我这是单个视频转码成功事件类型 通过判断 EventType 来确认是回调了什么事件类型再处理//注意他会回两个这个事件 ,因有m3u8与MP4 所以 我根据 FileUrl拿后缀名去减少多于的循环if (map.get("EventType").toString().equalsIgnoreCase("StreamTranscodeComplete")&& map.get("Status").toString().equalsIgnoreCase("success")&& map.get("FileUrl").toString().substring(map.get("FileUrl").toString().lastIndexOf(".") + 1).equalsIgnoreCase("mp4")) {String videoId = map.get("VideoId").toString();List<CourseVideo> courseVideos = courseVideoService.findByVideoUrl(videoId);if (courseVideos != null && courseVideos.size() > 0) {for (CourseVideo courseVideo : courseVideos) {//经过多个判断通过后 调用我上一次写的工具类来获取转码成功后的视频 信息 并填充到数据库GetPlayInfoResponse playInfo = AliyunVideoUtils.getPlayInfo(videoId);if (playInfo != null) {// courseVideo.setCoverUrl(playInfo.getVideoBase().getCoverURL()); //  我以第一帧去做封面 但3000秒后失效 所以不要存到数据库中  我是当controlle拿数据填充 View时再将这些视频信息填充到实体类(我是实体类中有暂存字段的)中courseVideo.setStatus(CourseVideoStatus.DRAFT.getValue());courseVideo.setDuration(Integer.parseInt(playInfo.getPlayInfoList().get(0).getDuration()));} else {logger.warn("阿里云视频获取不到视频信息:{}", "VideoId:" + videoId);}}courseVideoService.save(courseVideos);} else {logger.warn("未找到相对于的课程视频信息,videoId={}", videoId);}} else if (map.get("EventType").toString().equalsIgnoreCase("ImageUploadComplete")&& map.get("Status").toString().equalsIgnoreCase("success")) {// 图片上传回调}}}} catch (Exception e) {logger.error("阿里云回调处理服务器内部出错,原因={}", e.getMessage(), e);response.setStatus(500);}}/*** json字符串转Map<String,Object>*/public Map<String, Object> jsonToMap(String jsonString) {JSONObject json = new JSONObject(jsonString);Map<String, Object> map = new HashMap<String, Object>();@SuppressWarnings("rawtypes")Iterator it = json.keys();while (it.hasNext()) {String key = (String) it.next();Object value = json.get(key);map.put(key, value);}return map;}

阿里云上传视频回调处理相关推荐

  1. 谷粒学院-p143阿里云上传视频问题

    按照阿里云官方设置坐标,报错,因为aliyun-java-vod-upload还未开源,需要到 到官网下载SDK 是一个压缩包 复制jar包 根据网上的解决办法复制到apache-maven-3.5. ...

  2. ESP8266+dht11 连接阿里云 上传温湿度

    ESP8266+dht11 连接阿里云 上传温湿度 ①在刚开始研究的时候也是一头雾水,在看了几天各路大神写的博客和视频之后,最终得以实现. ②接下来让我详述一下整个过程 需要编写代码,云端创建产品和设 ...

  3. tp5.1 乐视云上传视频文件(https请求http乐视云上传接口)http网址下上传视频(https API接口)

    一.sdk_php_v2.0.zip 上传视频 网址:http://www.lecloud.com/zh-cn/help/api.html tp5.1 乐视云上传视频文件(https请求http乐视云 ...

  4. 微信小程序 实现阿里云上传

    先安装,我使用composer安装 在项目的根目录运行composer require aliyuncs/oss-sdk-php 微信小程序页面 <l-image-picker count=&q ...

  5. 文件上传(三)阿里云上传文件

    一.账号准备 1.先注册登录阿里云并实名认证: 2.进入管理控制台:阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台: 3.点击左边导航栏的用户-->新建用户: 如我创建的名称叫lhy, ...

  6. MQTT协议-报文分析及网络客户端报文测试(MQTT报文连接阿里云上传数据+订阅数据)

    文章目录 一.本文章所涉及到的内容 二.感性认识MQTT协议 三.准备信息 (一)工具获取 (二)获取信息 1.获取三元组信息 2.获取发布topic和订阅topic 3.客户端ID,用户名,哈希加密 ...

  7. flutter 阿里云上传文件

    业务背景: 服务器后端生成签名给前端: 前端通过 http 只接上传文件:这样不需要使用SDK 即可完成上传到 阿里云OSS, 这里使用的是  :PostObjecthttps://help.aliy ...

  8. java调用阿里云上传和下载(项目亲测)

    pom文件导入依赖就不贴了,直接到官网贴最新的就行:https://help.aliyun.com/document_detail/32009.html?spm=a2c4g.11186623.6.80 ...

  9. .ISO文件转换为.QCW2文件 阿里云上传自定义镜像

    最近在做的项目要求用中标麒麟的系统 而且要用阿里云的服务器 所以只能用开一个上传自定义镜像的ECS 阿里云是这样说的 没办法 只能吧iso转为qcow2了(原理 先把iso装到虚拟机 然后提取vmdk ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task28.跳跃游戏
  2. jvm性能调优实战 - 35电商APP后台系统如何对Full GC进行深度优化
  3. 其他的AdapterView——Gallery
  4. java字节输入与字符输入_Java中的字节输入出流和字符输入输出流
  5. Boot Loader的启动流程和开发经验总结
  6. Https的前世今生
  7. 自创小插件让emacs支持工程项目
  8. 解决Linux新安装的虚拟机没有网
  9. ensp ftp服务器配置文件,ensp配置ftp服务器,显示连接失败。
  10. 【Caffe安装】Ubuntu14.04上Caffe配置安装(Only CPU)
  11. 香港科技大学工学院理学硕士土木基建工程及管理(MSc CIEM)2022Fall宣讲会(线上)
  12. 《数字电子技术基础》3.3 CMOS门电路(上)
  13. grafana 画拓扑图 能不能_画网络拓扑图的软件除了visio外还有什么软件啊?
  14. 以《刀塔自走棋》和《酒馆战棋》为例,分析和研究自走棋的设计
  15. [AISTATS21]Towards Flexible Device Participation in Federated Learning阅读笔记
  16. 联想e470加装固态硬盘_联想e470能不能加固态硬盘?
  17. 计算机机械硬盘系统安装,电脑硬盘安装图解,机械硬盘安装-
  18. ​2022年个税专项附加扣除,开始确认,​拿到软考证书即可抵扣
  19. android 仿微信 视频播放器,Android仿微信多媒体选择器 - SmartMediaPicker
  20. 数字图像处理--空间变换

热门文章

  1. PN结中高掺杂浓度,耗尽层宽度变窄原因
  2. 基于RK3288的双屏异显实现
  3. 骆驼命名法 ,匈牙利命名法 和 帕斯卡命名法
  4. 解决上传图片时报错Uncaught (in promise) DOMException: Failed to execute ‘put‘ on ‘IDBObjectStore‘
  5. rados bench
  6. 牙科CBCT系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  7. 5种共享代码的实用方法:从NPM到Lerna,Git子模块和位
  8. Rancher环境搭建手册
  9. 苹果公司CEO乔布斯在斯坦福大学毕业典礼上的演讲
  10. 2002工程勘察设计收费标准_【海外要闻】海外事业部系列培训报道四——工程勘察设计收费标准(2002年修订版)交流探讨...