(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. 深入剖析通信层和RPC调用的异步化(上)
  2. 数据中台建设是噱头还是黑科技?
  3. 2015年秋季个人阅读计划
  4. android 关于内存优化的一些总结
  5. 新版vue-cli模板下本地开发环境使用node服务器跨域
  6. 例题4-5 引发的static知识点
  7. [css] css的height:100%和height:inherit之间有什么区别呢?
  8. JMeter Exception: java.net.BindException: Address already in use: connect(转)
  9. 块裁剪后的矩形边界如何去掉_如何3分钟剪辑出满意的视频号视频?
  10. 招聘看好的几个果然没来
  11. redis入门(转)
  12. Linux远程登录和多机操作
  13. Windows右键菜单项管理讲解(RightMenuMgr)
  14. 【Alpha版本】冲刺阶段——Day 1
  15. 应作如是观--全息的宇宙
  16. matlab 反步法,反步法的Matlab仿真学习程序
  17. win7系统下安装LINUX系统教程
  18. GN+NINJA环境搭建(MacOS Windows)
  19. 电脑PC端利用android-sdk使用微信、360云盘等应用
  20. 后端生成PDF一些工具

热门文章

  1. 奇瑞汽车用鸿蒙,奇瑞配鸿蒙,是自我放弃还是独辟蹊径?
  2. AC日记——神奇的幻方 洛谷 P2615(大模拟)
  3. Unity3D编辑器扩展1——批量处理资源
  4. 阿里云物联网平台MQTT设备接入
  5. java s3 与ceph的关系_ceph rgw:s3基本概念在rados中的组织方式
  6. Axure各种版本注册码 | 最新Axure RP 8.1.0.3377的授权码 亲测有效
  7. java使用创建Word文件示例
  8. 英特尔用连接与智能走进未来教育
  9. DocBook学习(v1.6.7)
  10. 天津人才引进迁出迁入延期经验分享