spring boot 实现 阿里云视频点播 功能 实现视频上传,视频删除,视频播放功能
1:开通视频点播服务,并可以上传视频做一些设置,转码,分类等
2:根据官方提供sdk示例, 实现上传视频功能
3:代码实现
引入依赖
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.1</version></dependency><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.10.2</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.15.11</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.28</version></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId><version>20170516</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency>
这个块有个问题,使用上传SDK aliyun-java-vod-upload-1.4.13.jar时,这个包下载不下来,是由于这个包没有开源,
那么先解决这个问题,
1:先在官方文档中下载Java上传SDK及示例代码VODUploadDemo-java-1.4.13.zip
2:解压后打开lib目录,然后打开cmd窗口,执行如下命令,版本号根据自己的修改
mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.11 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.11.jar
3:根据下载的aliyun-java-vod-upload-1.4.13.jar中的 UploadVideoDemo.java文件参照,里面都是上传案例,我们用流的方式上传,代码如下
controller层
@PostMapping("uploadAlyiVideo")public R uploadAlyiVideo(MultipartFile file) {//返回上传视频idString videoId = vodService.uploadVideoAly(file);return R.ok().data("videoId",videoId);}
service层
@Overridepublic String uploadVideoAly(MultipartFile file) {try {//accessKeyId, accessKeySecret//fileName:上传文件原始名称// 01.03.09.mp4String fileName = file.getOriginalFilename();//title:上传之后显示名称String title = fileName.substring(0, fileName.lastIndexOf("."));//inputStream:上传文件输入流InputStream inputStream = file.getInputStream();UploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);UploadVideoImpl uploader = new UploadVideoImpl();UploadStreamResponse response = uploader.uploadStream(request);String videoId = null;if (response.isSuccess()) {videoId = response.getVideoId();} else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因videoId = response.getVideoId();}return videoId;}catch(Exception e) {e.printStackTrace();return null;}}
4:删除视频案例:
controller层:
//根据视频id删除阿里云视频@DeleteMapping("removeAlyVideo/{id}")public R removeAlyVideo(@PathVariable String id) {try {//初始化对象DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);//创建删除视频request对象DeleteVideoRequest request = new DeleteVideoRequest();//向request设置视频idrequest.setVideoIds(id);//调用初始化对象的方法实现删除client.getAcsResponse(request);return R.ok();}catch(Exception e) {e.printStackTrace();throw new MyRuntimeException(20001,"删除视频失败");}}//删除多个阿里云视频的方法//参数多个视频id List videoIdList@DeleteMapping("delete-batch")public R deleteBatch(@RequestParam("videoIdList") List<String> videoIdList) {vodService.removeMoreAlyVideo(videoIdList);return R.ok();}
service层
@Overridepublic void removeMoreAlyVideo(List videoIdList) {try {//初始化对象DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);//创建删除视频request对象DeleteVideoRequest request = new DeleteVideoRequest();//videoIdList值转换成 1,2,3String videoIds = StringUtils.join(videoIdList.toArray(), ",");//向request设置视频idrequest.setVideoIds(videoIds);//调用初始化对象的方法实现删除client.getAcsResponse(request);}catch(Exception e) {e.printStackTrace();throw new MyRuntimeException(20001,"删除视频失败");}}public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("11");list.add("22");list.add("33");// 11,22,33String join = StringUtils.join(list.toArray(), ",");System.out.println(join);}
三:实现在浏览器播放阿里云点播视频
注意: 其中如果不是加密转码视频,就直接用视频地址播放就可以,但是如果是转码加密视频,就需要获取播放凭证后才能转码
参考文档:https://help.aliyun.com/document_detail/61109.html
一、后端获取播放凭证
//根据视频id获取视频凭证@GetMapping("getPlayAuth/{id}")public R getPlayAuth(@PathVariable String id) {try {//创建初始化对象DefaultAcsClient client =InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);//创建获取凭证request和response对象GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();//向request设置视频idrequest.setVideoId(id);//调用方法得到凭证GetVideoPlayAuthResponse response = client.getAcsResponse(request);String playAuth = response.getPlayAuth();return R.ok().data("playAuth",playAuth);}catch(Exception e) {throw new MyRuntimeException(20001,"获取凭证失败");}}
二、前端播放器整合
<template><div><!-- 阿里云视频播放器样式 --><link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.1/skins/default/aliplayer-min.css" ><!-- 阿里云视频播放器脚本 --><script charset="utf-8" type="text/javascript" src="https://g.alicdn.com/de/prismplayer/2.8.1/aliplayer-min.js" /><!-- 定义播放器dom --><div id="J_prismPlayer" class="prism-player" /></div>
</template>
<script>
import vod from '@/api/vod'export default {layout: 'video',//应用video布局asyncData({ params, error }) {console.log(params)console.log(params.vid)return vod.getPlayAuth(params.vid).then(response => {return { playAuth: response.data.data.playAuth,vid: params.vid}})},mounted() { //页面渲染之后 creatednew Aliplayer({id: 'J_prismPlayer',vid: this.vid, // 视频idplayauth: this.playAuth, // 播放凭证encryptType: '1', // 如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项width: '100%',height: '500px',// 以下可选设置cover: 'http://guli.shop/photo/banner/1525939573202.jpg', // 封面qualitySort: 'asc', // 清晰度排序mediaType: 'video', // 返回音频还是视频autoplay: false, // 自动播放isLive: false, // 直播rePlay: false, // 循环播放preload: true,controlBarVisibility: 'hover', // 控制条的显示方式:鼠标悬停useH5Prism: true, // 播放器类型:html5}, function(player) {console.log('播放器创建成功')})}}
</script>
可给视频播放增加一些功能配置:
在线配置参考:https://player.alicdn.com/aliplayer/setting/setting.html
spring boot 实现 阿里云视频点播 功能 实现视频上传,视频删除,视频播放功能相关推荐
- Spring Boot集成阿里云视频点播服务的过程记录
阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...
- 阿里云视频点播(媒资上传)
在真实项目中,需要对阿里云点播操作进行代码集成. 1.写在配置文件中(application.yml) #阿里云配置 aliyun:region: cn-shanghai #点播地域标识accessK ...
- 玩转spring boot——结合阿里云持续交付
前言 在互联网项目中,项目测试.部署往往需要花费大量时间.传统方式是在本地打包.测试完毕程序,然后通过ftp上传至服务器,再把测试的配置文件修改为生产环境的配置文件,最后重新运行服务.这一过程如果交给 ...
- 阿里云视频点播功能使用
1.开通并且获得密钥和安全密钥 1.开通 1. 2. 3. 4. 2.获得配置参数 1.启用 2.添加转码模组 3.获取AccessKeyId和AccessKey Secret 2.使用 1.下载Ja ...
- spring boot 整合 阿里云oss上传
Spring Boot 整合 阿里云OSS上传 OSS申请和配置 1. 注册登录 2.开通以及配置 springboot整合使用 1. 进入我们springboot的项目中,导入oss相关依赖 2. ...
- springboot整合阿里云视频点播服务Vod——实现视频上传、删除、播放
视频点播(ApsaraVideo VoD,简称VoD)是集视频采集.编辑.上传.媒体资源管理.自动化转码处理(窄带高清™).视频审核分析.分发加速于一体的一站式音视频点播解决方案. 阿里云视频点播服务 ...
- 阿里云视频点播服务Vod工具类——实现视频上传、删除、播放
阿里云视频点播服务Vod工具类--实现视频上传.删除.播放 阿里云视频点播服务Vod工具类 maven依赖 工具类实现 工具类的测试 获取视频 1. 获取单个视频的播放地址和ID: 2. 获取所有视频 ...
- 前后端分离 -- 深入浅出 Spring Boot + Vue + ElementUI 实现相册管理系统【文件上传 分页 】 文件上传也不过如此~
前后端分离 – 深入浅出系列 Spring Boot + Vue + ElementUI 实现相册管理系统[文件上传 分页 ] 文件上传也不过如此~ 引言 Hello,我是Bug终结者,一名热爱后端J ...
- python程序发布到阿里云云服务器_Python实现阿里云服务器里的文件上传与下载
Python实现阿里云服务器里的文件上传与下载 018.4.15 背景: 老实说,因为现实的各种原因造成电脑换来换去是可能出现的事情,但是电脑能换,电脑里的环境却不能换.我就曾在三个电脑里各自安装了虚 ...
最新文章
- 杨元庆:兔子要变成狼靠的是体制的激励
- Numpy入门教程:05. 逻辑函数
- 使用xshell5 从CentOS主机download资料
- 自学python要下载什么软件-Python学习需要安装的工具
- vshpere esxi6.7安装
- 通用型CRM还是行业型CRM?-定制为王
- C语言课后习题(45)
- 【英语学习】【Level 07】U03 Amazing wonders L5 Modern structures in China
- Flash与数学: 旋轮线(2)
- 单通道GNSS模拟器行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
- Windows10自带应用的卸载和恢复
- 电源设计经验之 MOS 管驱动电路
- iPhone升级iOS 16后Siri无法正常工作怎么办?3种解决办法
- 面向未来:元宇宙是可望不可及的彼岸世界
- VR技术与生态:大咖跟你聊VR未来
- SQL 已更新或删除的行值要么不能使该行成为唯一行
- Android APK 32位和64位 的区别
- 煮酒论语言 -- 曹孟德黑尽天下语言
- Apache DolphinScheduler 是如何诞生的
- Windows中安装配置Maven详细教程
热门文章
- pmp通过率都97%,只要考都能过?还有啥价值?
- 计算机知识二级竞赛流程,计算机知识竞赛方案.doc
- stm32毕设分享 RFID门禁防盗报警系统(源码+论文)
- [BEGIN,分隔符,字符串,字段,制表符]Linux:“awk”命令的妙用
- 大数据开发基础入门与项目实战(三)Hadoop核心及生态圈技术栈之5.即席查询Impala介绍及入门使用
- 关于无线网卡中的一个参数:DB的介绍
- 数据库表结构设计原则
- 自然辩证法小论文选题_自然辨证法论文题目
- 昨天的自动化仓储物流系统,为何一转脸就变成了智能化、智慧化?
- 传统售楼中心已建设数字展厅,以多媒体技术给客户最佳看楼盘体验