视频点播(ApsaraVideo for VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、分发加速于一体的一站式音视频点播解决方案。

一、阿里云开通视频点播及控制台常用操作

开通地址:阿里云视频点播服务
根据业务需求选择流量计费或是宽带峰值计费。

流程

1、用户要先获取上传授权
2、VoD下发 上传地址和凭证 及 VideoId
3、用户上传视频保存视频ID(VideoId)
4、用户服务端获取播放凭证
5、VoD下发带时效的播放凭证
6、用户服务端将播放凭证下发给客户端完成视频播放

媒资库 - 上传视频

管理视频


配置管理 - 媒资管理配置 - 分类管理

媒体处理配置


封装格式选择hls,则有一个高级参数,可以视频进行加密处理。

上传视频时,通过选择转码模板,可对视频进行加密

配置域名

音视频上传完成后,必须配一个已备案的域名,并完成CNAME绑定。如果要播放加密的视频,需要配置域名。

更多详细操作见官方文档视频点播

二、使用服务端SDK - 可以直接下载demo代码看

1、简介

SDK的方式将API进行了进一步的封装,不用自己创建工具类。我们可以基于服务端SDK编写代码来调用点播API,实现对点播产品和服务的快速操作。
SDK封装了对API的调用请求和响应,避免自行计算较为繁琐的 API签名。支持所有点播服务的API,并提供了相应的示例代码。支持7种开发语言,包括:Java、Python、PHP、.NET、Node.js、Go、C/C++。

2、安装SDK

参考官网:安装SDK
引入Jar包依赖 - 建议参考官网最新

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.3.3</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.15.5</version></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.2</version></dependency>

3、初始化及AccessKey工具类

参考官方文档:初始化
根据文档书写一个初始化帮助类,通过账号AccessKey来初始化。
这个AccessKey账号,需要添加如下几个权限。

/*** @ClassName InitVodClient* @Description 阿里云视频点播服务 - 初始化* @Author 柳成荫*/
public class InitVodClient {/** 点播服务接入区域 */public static final String REGION_ID = "cn-shanghai";/*** 获取视频播放凭证的Client* @param accessKeyId accessKeyId* @param accessKeySecret accessKeySecret* @return* @throws ClientException*/public static DefaultAcsClient initVodCredentialsClient(String accessKeyId, String accessKeySecret) throws ClientException {DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, accessKeyId, accessKeySecret);return new DefaultAcsClient(profile);}/*** 获取视频播放地址的Client* @param accessKeyId accessKeyId* @param accessKeySecret accessKeySecret* @return* @throws ClientException*/public static IAcsClient initVodUrlClient(String accessKeyId, String accessKeySecret) throws ClientException {DefaultProfile profile = DefaultProfile.getProfile(REGION_ID, accessKeyId, accessKeySecret);return new DefaultAcsClient(profile);}
}

工具类:

@Component
public class ConstantVodUtils implements InitializingBean {// 从配置文件中读取KeyId@Value("${aliyun.vod.file.keyid}")private String keyId;// 从配置文件中读取KeySecret@Value("${aliyun.vod.file.keysecret}")private String keySecret;public static String ACCESS_KEY_SECRET;public static String ACCESS_KEY_ID;@Overridepublic void afterPropertiesSet() throws Exception {ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;}
}

附-配置文件:

server.port=8081
#阿里云 vod
#不同的服务器,地址不同
aliyun.vod.file.keyid=xxxxx
aliyun.vod.file.keysecret=xxxxxx# 最大上传单个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB

4、使用服务端上传视频

参考官网文档:服务端Java上传

安装SDK

使用服务端上传视频,需要先安装SDK,引入相关依赖,但是需要注意aliyun-java-vod-upload-1.4.12.jar尚未开源,因此需要自己使用Maven命令打入依赖,或者直接在项目中引入该Jar包。
Jar包下载地址:所有依赖的Jar包(SDK)下载地址

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.3.3</version>
</dependency>
<dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.1.0</version>
</dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.15.2</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>
上传代码 - 以流的方式

上传视频,返回videoId,方便后面删除、播放。

public String uploadAlyVideo(MultipartFile file) {try{// 视频 - 源文件名String fileName = file.getOriginalFilename();// 标题 - 上传到阿里云的文件标题String title = fileName.substring(0, fileName.lastIndexOf("."));// 上传文件的输入流InputStream inputStream = file.getInputStream();// 实际这个request还可以设置更多参数,更多请见官方文档// https://help.aliyun.com/document_detail/53406.html?spm=a2c4g.11186623.6.1065.5e5d3bd9a6AtYlUploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET,title,fileName,inputStream);UploadVideo uploader = new UploadVideoImpl();UploadStreamResponse response = uploader.uploadStream(request);// VideoIdString videoId = null;if (response.isSuccess()){// 上传成功videoId = response.getVideoId();}else{// 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因// ....videoId = response.getVideoId();}// 将Video的ID返回return videoId;}catch (Exception e){e.printStackTrace();return null;}
}

5、删除阿里云端视频 - 根据videoId

删除一个视频
 public String removeAlyVideo(@PathVariable String id) throws Exception {try {DefaultAcsClient client = InitVodClient.initVodCredentialsClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);DeleteVideoRequest request = new DeleteVideoRequest();// 设置视频idrequest.setVideoIds(id);// 删除client.getAcsResponse(request);return "删除成功!";}catch (Exception e){e.printStackTrace();throw new Exception("删除视频失败!可以尝试重新删除文件!");}}
删除多个视频
// 参数是videoId集合
public void removeMoreAlyVideo(List<String> videoList) throws Exception {try{DefaultAcsClient client = InitVodClient.initVodCredentialsClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);DeleteVideoRequest request = new DeleteVideoRequest();// videoList转换成以逗号隔开的字符串String videoIds = StringUtils.join(videoList.toArray(),",");request.setVideoIds(videoIds);client.getAcsResponse(request);}catch (Exception e){e.printStackTrace();throw new Exception("删除视频失败!");}}

视频播放 - 阿里独有凭证方式

阿里云播放器支持通过播放凭证自动换取播放地址进行播放,接入方式更为简单,且安全性更高。播放凭证默认时效为100秒(最大为3000秒),只能用于获取指定视频的播放地址,不能混用或重复使用。如果凭证过期则无法获取播放地址,需要重新获取凭证。
播放视频需要获取凭证,凭证代码如下:

/*** 获取视频播放凭证* @param id 视频id* @return* @throws Exception*/
@GetMapping("/getPlayAuth/{id}")
public GetVideoPlayAuthResponse getPlayAuth(@PathVariable String id) throws Exception {try {// 创建初始化对象DefaultAcsClient client =InitVodClient.initVodCredentialsClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);// 创建获取凭证request和response对象GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();// 向request设置视频idrequest.setVideoId(id);// 调用方法得到凭证// 凭证return client.getAcsResponse(request);}catch (Exception e){throw new Exception("获取凭证失败!");}
}

注意:播放凭证有过期时间,默认值:100秒 。取值范围:100~3000。
设置播放凭证的有效期,在获取播放凭证的测试用例中添加如下代码:

request.setAuthInfoTimeout(200L);

使用凭证,必须使用阿里独有的播放器。
返回的JSON数据,如图:

前端示例

播放器重要属性:

encryptType:'1',//如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项
vid: '视频id',
playauth: '视频授权码',

配置播放器参考:阿里云Aliplayer播放器

下面只是一个不完整的小示例 - 建议直接看上面那个链接

HTML页面的示例

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="IE=edge"><meta name="viewport"content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/><title>Aliplayer Online Settings</title><link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.9.3/skins/default/aliplayer-min.css"/><script type="text/javascript" charset="utf-8"src="https://g.alicdn.com/de/prismplayer/2.9.3/aliplayer-min.js"></script>
</head>
<body>
<div class="prism-player" id="player-con"></div>
<script>var player = new Aliplayer({id: 'player-con',vid: '533b83546ad440a9933ce08284651a17', // 视频idplayauth: 'eyJTZWN1cml0eVRva2VuIjoiQ0FJU2h3TjFxNkZ0NUIyeWZTaklyNWIyTzRuanVvcFAvUE9oT21URnNHVTdXOEo4cEt2TXB6ejJJSDVFZW5OcUF1d2F2Lzh5bEd0VDZQZ1psck1xRmM0ZUdoR1lQWm9ydGMwTXJsUDhKcExGc3QySjZyOEpqc1VwLzVrdjVsbXBzdlhKYXNEVkVmbDJFNVhFTWlJUi8wMGU2TC8rY2lyWXBUWEhWYlNDbFo5Z2FQa09Rd0M4ZGtBb0xkeEtKd3hrMnQxNFVtWFdPYVNDUHdMU2htUEJMVXhtdldnR2wyUnp1NHV5M3ZPZDVoZlpwMXI4eE80YXhlTDBQb1AyVjgxbExacGxlc3FwM0k0U2M3YmFnaFpVNGdscjhxbHg3c3BCNVN5Vmt0eVdHVWhKL3phTElvaXQ3TnBqZmlCMGVvUUFQb3BGcC9YNmp2QWF3UExVbTliWXhncGhCOFIrWGo3RFpZYXV4N0d6ZW9XVE84MCthS3p3TmxuVXo5bUxMZU9WaVE0L1ptOEJQdzQ0RUxoSWFGMElVRUJ5RUd5RWNQSDZwd3FTUFZqK0U1TG9pdjltamNCSHFIeno1c2VQS2xTMVJMR1U3RDBWSUpkVWJUbHphVTVJaHphNkx2TlhLRkVjS0FnNVdlMlBNYXgzYlFGRHI1M3ZzVGJiWHpaYjBtcHR1UG56ZDEwMVJuWGh4eUdWR29BQkRDdWV3V0Y5TWJKRGtXNEtQWExtNjZxSXJ0WWZ5d2VzZ3cwc0c0amlFam5nekdVUHBPR3VqbnFoWG5FRjcxUW12alRnNkhYbnpudkNQeGorSVVhRkJNMFFEMkdsa3pKRmx5QklLamNoUWVhYnptMEpMaHdyRTFITmZZTUJPSTJNRm52MWlMdFd5emZ5TDhHaFl2SmQzZXpScGRJelFuckU1SmNBaFdvamppWT0iLCJBdXRoSW5mbyI6IntcIkNJXCI6XCJpSlNKUWxnbmFlR2tKMlpTRTdycGJYWGtsMmFCSHpnOXRqeFJpaE1LSGk3WGRYUXBEY294WkN5b0pTajZ4czRFVDVhM2IveVlNSHN6MUdraGpacXZtSTNvNVc1U1hFYktueGYrdkpKV2VDRT1cIixcIkNhbGxlclwiOlwiV0l2K0x6WXZ4TlFPdy94RjJKS1BSRVNKaUpob28rTzdUOEV1b1lHcE9LWT1cIixcIkV4cGlyZVRpbWVcIjpcIjIwMjEtMDMtMjJUMTQ6MjQ6MzNaXCIsXCJNZWRpYUlkXCI6XCI1MzNiODM1NDZhZDQ0MGE5OTMzY2UwODI4NDY1MWExN1wiLFwiU2lnbmF0dXJlXCI6XCJ0Yk9TcThrTTMwSjVyczdXNk1SSjI5MTVTQVU9XCJ9IiwiVmlkZW9NZXRhIjp7IlN0YXR1cyI6Ik5vcm1hbCIsIlZpZGVvSWQiOiI1MzNiODM1NDZhZDQ0MGE5OTMzY2UwODI4NDY1MWExNyIsIlRpdGxlIjoiV2hhdCBJZiBJIFdhbnQgdG8gTW92ZSBGYXN0ZXIiLCJDb3ZlclVSTCI6Imh0dHA6Ly9vdXRpbi1hZGVhYzZkZjgxNzYxMWVhYTk3NTAwMTYzZTA2MTIzYy5vc3MtY24tc2hhbmdoYWkuYWxpeXVuY3MuY29tLzUzM2I4MzU0NmFkNDQwYTk5MzNjZTA4Mjg0NjUxYTE3L3NuYXBzaG90cy9kNDZhNmY2M2U2YTc0NjUxOWQ4YWU2OTU3NjhjZDIyNC0wMDAwMS5qcGc/RXhwaXJlcz0xNjE2NDI2NTczJk9TU0FjY2Vzc0tleUlkPUxUQUk0RmZENjN6b3FubTZja2lCRmZYWiZTaWduYXR1cmU9aFQlMkZaN2JSQVpPTU5zdmZXOUpyalFSSDdqS0ElM0QiLCJEdXJhdGlvbiI6MTYuMjc2N30sIkFjY2Vzc0tleUlkIjoiU1RTLk5VQ3AzV1dVbksxSjhCdFRlbldNUEtuZ0UiLCJBY2Nlc3NLZXlTZWNyZXQiOiI5Q1VaUFg3cGlkSzk0U0w4UHlaRTJVMkRRM2l5UVU3ZUJvV3U1Uld1Q29IUiIsIlJlZ2lvbiI6ImNuLXNoYW5naGFpIiwiQ3VzdG9tZXJJZCI6MTY5Mzc1NDg5MzMxMzc4NX0===', // 播放凭证encryptType: '1', // 如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项width: '500px',height: '750px',// 以下可选设置cover: 'http://outin-adeac6df817611eaa97500163e06123c.oss-cn-shanghai.aliyuncs.com/533b83546ad440a9933ce08284651a17/snapshots/d46a6f63e6a746519d8ae695768cd224-00001.jpg?Expires=1616430578&OSSAccessKeyId=LTAI4FfD63zoqnm6ckiBFfXZ&Signature=SRVRohYttwHssD8ZLhukVcxZ8bg%3D', // 封面qualitySort: 'asc', // 清晰度排序mediaType: 'video', // 返回音频还是视频autoplay: true, // 自动播放isLive: false, // 直播rePlay: false, // 循环播放preload: true,controlBarVisibility: 'hover', // 控制条的显示方式:鼠标悬停useH5Prism: true, // 播放器类型:html5}, function (player) {console.log('播放器创建成功')});
</script>
</body>

使用阿里独有的播放器的时候需要引入对应的js和css,但是在vue-cli项目里。template标签里是无法通过script标签引入的,因此可以在index.html里引入,如图:

这个方法时偶然试探出来的,在网上也看到过其他解决办法,但都太麻烦了。

视频播放 - 获取播放地址

可以参考官方文档,我这里使用的是旧的SDK。

/*** 获取视频播放地址* @param id 视频id* @return* @throws Exception*/
@GetMapping("/getPlayAuthIA/{id}")
public String getUrl(@PathVariable String id) throws Exception {try{IAcsClient client = InitVodClient.initVodUrlClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);CommonRequest request = new CommonRequest();request.setSysMethod(MethodType.POST);request.setSysDomain("vod.cn-shanghai.aliyuncs.com");request.setSysVersion("2017-03-21");request.setSysAction("GetPlayInfo");request.putQueryParameter("VideoId", id);CommonResponse response = client.getCommonResponse(request);// 返回的是一个JSON字符串,可以将其转换为对应的对象,然后获取URLreturn response.getData();} catch (ClientException e) {e.printStackTrace();throw new Exception("获取视频信息失败!");}
}

返回的JSON数据,如图:

代码Github地址:阿里云视频点播服务JavaDemo
代码Gitee地址:阿里云视频点播服务JavaDemo

SpringBoot - 阿里云视频点播的简单使用相关推荐

  1. springboot阿里云视频点播服务实现上传视频和删除功能

    视频播放参照地址:https://www.cnblogs.com/konglxblog/p/15116534.html 一.开通视频点播云平台 1.选择视频点播服务(收费) 阿里云地址:https:/ ...

  2. SpringBoot整合阿里云视频点播

    文章目录 SpringBoot整合阿里云视频点播 1.准备工作 2.服务端SDK的使用 2.1 导入依赖 2.2 初始化类 2.3 创建读取公共常量的工具类 2.4 获取视频播放地址 2.5 获取视频 ...

  3. 【springboot】实现阿里云视频点播上传视频

    阿里云视频点播 1.开通视频点播服务,选择按流量计费,对于个人项目来说,相当于免费. 2.开启存储管理 3.设置转码模板组.设置加密,如果不加密,别人只要获取到你视频的url就可以免费观看,但进行了加 ...

  4. springboot整合阿里云视频点播服务Vod——实现视频上传、删除、播放

    视频点播(ApsaraVideo VoD,简称VoD)是集视频采集.编辑.上传.媒体资源管理.自动化转码处理(窄带高清™).视频审核分析.分发加速于一体的一站式音视频点播解决方案. 阿里云视频点播服务 ...

  5. Springboot整合阿里云视频点播服务

    目录 一.阿里云视频点播服务 二.开通视频点播云平台 1.搜索视频点播服务 2.开通视频点播 3.选择按使用流量计费 三.使用SDK 1.添加Jar包依赖 2.application.properti ...

  6. 玩转短视频?守护视频安全?AI智能提速?一分钱体验? 阿里云视频点播大招盘点...

    摘要: 前言 随着近几年在线视频市场规模不断扩大,内容不断创新,用户粘性增加,在线视频市场的商业价值不断增长,各垂直行业纷纷引入视频能力,一时之间,视频已经成为了众多移动APP和在线平台沉淀用户的有效 ...

  7. 阿里云-视频点播服务API调用

    视频点播服务 最近公司项目需要用到视频播放及管理,多放选型后准备采用阿里云视频点播服务(公司一直用阿里系) 购买了视频点播存储包和视频点播流量包 首先存储配置 配置管理 -> 媒资管理配置 -& ...

  8. 阿里云视频点播服务SDK的使用,视频文件上传测试

    文章目录 阿里云视频点播技术简介 一.阿里云视频点播技术能力盘点 1.应用场景 2.功能介绍 二.开通视频点播云平台 1.选择视频点播服务 2.开通视频点播 3.选择按使用流量计费 4.资费说明 5. ...

  9. 使用阿里云视频点播上传视频

    目录 前言 一.目的 二.实现步骤 1.准备操作 2.主要使用模块 2.1. 上传音频 2.2. 添加转码设置 3.搭建视频点播环境 3.1.配置Maven仓库 3.2.添加jar依赖 3.3.上传视 ...

最新文章

  1. 沈向洋谈做研究的那些事儿
  2. JavaScript 表单编程
  3. (Unfinished)RNN-循环神经网络之LSTM和GRU-04介绍及推导
  4. JZOJ 5922. 【NOIP2018模拟10.23】sequence
  5. vue 获取元素在浏览器的位置_JavaScript获取窗口位置和元素坐标(兼容版)
  6. java 偏移符号_java中的移位运算符总结
  7. 玩转GIT系列之【如何配置GIT的用户名/密码/密钥】
  8. 最近发现系统rabbitmq丢消息比较严重,于是想了些方案来查找原因,给将消息发送方式添加确认机制。 我们在本地模拟了wms发送打标消息的场景. 1. 有事务 2. 先发点对点队列, 再发订
  9. 神经网络与深度学习——TensorFlow2.0实战(笔记)(五)(Matplotlib绘图基础<散点图>python)
  10. Xctf练习sql注入--supersqli
  11. JS 获取链接(url)参数以及锚链接(anchor)结合富ajax的应用(ajax前进/后退的问题)...
  12. 利用Office Chart 制作柱图(一个柱子)
  13. .NET处理异常--zt
  14. 【报告分享】基础设施的新兴趋势-毕马威.pdf(附pdf下载链接)
  15. zookeeper 分布式锁_详细讲解!从秒杀聊到ZooKeeper分布式锁
  16. 十岁陌陌更名“挚文集团”的战略新时代|财报解读
  17. SPSS Statistical 软件的使用
  18. 编译器的自举及实现过程
  19. [Vue][transition]Vue中实现类似JQuery中slideUp slideDown的滑动显示隐藏过渡动画效果
  20. html 自动排序表格,表格排序.html

热门文章

  1. 编程之路上的感悟-编程语言该怎么选
  2. Web应用程序和Web网站
  3. 织梦插件-全自动SEO织梦插件
  4. python爬虫实战笔记---以轮子哥为起点Scrapy爬取知乎用户信息
  5. 前端大事记之几件大事
  6. 轨道交通计算机网络技术,城市轨道交通列车网络控制技术
  7. Unity WebGL的Autodesk Interactive渲染问题
  8. win10系统计算器闪退怎么办? win10系统计算器闪退解决方法?
  9. 第三方SDK编写文档 - iOS
  10. 尚硅谷 spring cloud 2020