文章目录

  • SpringBoot整合阿里云视频点播
    • 1.准备工作
    • 2.服务端SDK的使用
      • 2.1 导入依赖
      • 2.2 初始化类
      • 2.3 创建读取公共常量的工具类
      • 2.4 获取视频播放地址
      • 2.5 获取视频播放凭证
      • 2.6 上传视频到阿里云视频点播服务
    • 3.springboot项目中实践
      • 3.1 上传视频到阿里云
      • 3.2 根据视频id删除视频

SpringBoot整合阿里云视频点播

1.准备工作

首先需要在阿里云开通视频点播服务:

  1. 首先,进入到阿里云视频点播平台,点击开通服务,选择按使用流量计费即可

  2. 开通之后点击进入管理控制台即可

视频点播有什么用?

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

2.服务端SDK的使用

官方文档链接:Java SDK

SDK的方式将api进行了进一步的封装,不用自己创建工具类。 我们可以基于服务端SDK编写代码来调用点播API,实现对点播产品和服务的快速操作。

2.1 导入依赖

注意:环境必须是JDK6 及以上版本

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.1</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.62</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-kms</artifactId><version>2.10.1</version>
</dependency>

2.2 初始化类

根据官方文档示例创建初始化类InitObject

/*** @author xppll* @date 2021/12/5 13:57*/
public class InitObject {//初始化:需要传入accessKeyId+accessKeySecretpublic static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {String regionId = "cn-shanghai";  //点播服务接入区域DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);return client;}
}

accessKeyIdaccessKeySecret的获取:

这里的初始化方法需要传入账号Access Key信息,可以在阿里云Access Key管理创建主账号Access Key

点播服务接入区域regionId的获取:

点击点播控制台的存储管理,查看自己所选的区域:

在查看接入区域标识对应API/SDK的RegionId参数:

2.3 创建读取公共常量的工具类

首先在配置文件application.properties添加:

aliyun.vod.file.keyid=LTAI5tGqf41adadaxxAa
aliyun.vod.file.keysecret=zE4nEzmcU7GxxxxmTgWRk0tytJKD# 最大上传单个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB

在创建读取公共常量的工具类ConstantVodUtils

/*** @author xppll* @date 2021/12/2 19:11*/
@Component
public class ConstantVodUtils implements InitializingBean {@Value("${aliyun.vod.file.keyid}")private String keyId;@Value("${aliyun.vod.file.keysecret}")private String keySecret;//定义公共静态常量public static String ACCESS_KEY_ID;public static String ACCESS_KEY_SECRET;@Overridepublic void afterPropertiesSet() throws Exception {ACCESS_KEY_ID = keyId;ACCESS_KEY_SECRET = keySecret;}
}

2.4 获取视频播放地址

首先手动先在点播控制台上传一个视频用于测试:

步骤:

  1. 创建初始化对象
  2. 创建获取视频地址requestresponse
  3. request对象里面设置视频id
  4. 用初始化对象里面的方法getAcsResponse,传递request,获取数据
  5. 打印信息

代码如下:

//获取视频播放地址
private static void getPlayUrl() throws ClientException {//1.创建初始化对象DefaultAcsClient client = InitObject.initVodClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);//2.创建获取视频地址request和responseGetPlayInfoRequest request = new GetPlayInfoRequest();GetPlayInfoResponse response = new GetPlayInfoResponse();//3.向request对象里面设置视频idrequest.setVideoId("ffe90bfaxxx94d0d722caad");//4.调用初始化对象里面的方法,传递request,获取数据response = client.getAcsResponse(request);List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();//播放地址for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {System.out.print("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\n");}//Base信息System.out.print("VideoBase.Title = " + response.getVideoBase().getTitle() + "\n");
}

测试成功:

2.5 获取视频播放凭证

步骤与获取视频播放地址差不多,区别是获取requestresponse方式不同:

//获取视频播放凭证
private static void getPlayAuth() throws ClientException {//1.创建初始化对象DefaultAcsClient client = InitObject.initVodClient(ConstantVodUtils.ACCESS_KEY_ID,ConstantVodUtils.ACCESS_KEY_SECRET);//2.创建获取视频凭证的request和responseGetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();//3.向request设置视频idrequest.setVideoId("ffe90bfaaadd4xxxx0d722caad");//4.调用初始化对象的方法得到凭证response = client.getAcsResponse(request);//播放凭证System.out.println("playauth" + response.getPlayAuth());
}

测试成功:

2.6 上传视频到阿里云视频点播服务

可以参考:Java上传SDK

需要导入依赖:

<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>

代码如下:

//上传视频到阿里云视频点播服务
private static void uploadVideo() {String accessKeyId = ConstantVodUtils.ACCESS_KEY_ID;String accessKeySecret = ConstantVodUtils.ACCESS_KEY_SECRET;//上传后视频的标题String title = "xpp1";//本地文件上传路径String fileName = "D:/6 - What If I Want to Move Faster.mp4";UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);//可指定分片上传时每个分片的大小,默认为2M字节 request.setPartSize(2 * 1024 * 1024L);//可指定分片上传时的并发线程数,默认为1request.setTaskNum(1);UploadVideoImpl uploader = new UploadVideoImpl();UploadVideoResponse response = uploader.uploadVideo(request);if (response.isSuccess()) {System.out.print("VideoId=" + response.getVideoId() + "\n");} else {/* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */System.out.print("VideoId=" + response.getVideoId() + "\n");System.out.print("ErrorCode=" + response.getCode() + "\n");System.out.print("ErrorMessage=" + response.getMessage() + "\n");}
}

测试成功:

3.springboot项目中实践

创建初始化类:

/*** @author xppll* @date 2021/12/5 13:57*/
public class InitVodCilent {//初始化:需要传入accessKeyId+accessKeySecretpublic static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {String regionId = "cn-shanghai";  // 点播服务接入区域DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);DefaultAcsClient client = new DefaultAcsClient(profile);return client;}
}

3.1 上传视频到阿里云

controller层:

@Autowired
private VodService vodService;
//上传视频到阿里云
@PostMapping("uploadAlyiVideo")
public R uploadAlyVideo(MultipartFile file){//返回上传视频idString videoId=vodService.uploadVideoAly(file);//将视频`id`返回给前端return R.ok().data("videoId",videoId);
}

service层:

//上传视频到阿里云
@Override
public String uploadVideoAly(MultipartFile file) {try {//fileName:上传文件原始名称String fileName = file.getOriginalFilename();//title:上传之后显示名称(例子:01.mp4=>01)String title = fileName.substring(0, fileName.lastIndexOf("."));//inputStream:上传文件输入流InputStream inputStream = file.getInputStream();//获得requestUploadStreamRequest request = new UploadStreamRequest(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET, title, fileName, inputStream);UploadVideoImpl uploader = new UploadVideoImpl();//上传获得responseUploadStreamResponse response = uploader.uploadStream(request);String videoId = null;if (response.isSuccess()) {//得到视频idvideoId = response.getVideoId();} else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因videoId = response.getVideoId();}return videoId;} catch (IOException e) {e.printStackTrace();return null;}
}

3.2 根据视频id删除视频

controller层:

//根据视频id删除视频
@DeleteMapping("removeAlyVideo/{id}")
public R removeAlyVideo(@PathVariable String id){vodService.deleteAlyVideo(id);return R.ok();
}

service层:

//根据视频id删除视频
@Override
public void deleteAlyVideo(String id) {try {//1.初始化对象DefaultAcsClient client = InitVodCilent.initVodClient(ConstantVodUtils.ACCESS_KEY_ID, ConstantVodUtils.ACCESS_KEY_SECRET);//2.创建删除视频的request对象DeleteVideoRequest request=new DeleteVideoRequest();//3.向request设置视频idrequest.setVideoIds(id);//4.调用初始化对象的方法实现删除client.getAcsResponse(request);} catch (Exception e) {e.printStackTrace();throw new GuliException(20001,"删除视频失败");}
}


最后喜欢的小伙伴,记得三连哦!

SpringBoot整合阿里云视频点播相关推荐

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

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

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

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

  3. SpringBoot整合阿里云OSS文件上传、下载、查看、删除

    SpringBoot整合阿里云OSS文件上传.下载.查看.删除 该项目源码地址:https://github.com/ggb2312/springboot-integration-examples ( ...

  4. SpringBoot整合——阿里云对象存储(OSS)

    SpringBoot整合--阿里云对象存储 1 OSS介绍 在开发应用的过程中,我们经常会有用户需要实名认证之后才能访问的需求. 用户认证需要上传证件图片.首页轮播也需要上传图片,因此我们要做文件服务 ...

  5. SpringBoot整合阿里云短信服务详细过程(保证初学者也能实现)

    前言 网上关于实操性的文章普遍大部分都记录不全,要么只记录重点部分,对于刚学习的小伙伴来说看起来是比较困难的 所以,基于这一点. 该文章会详细介绍使用SpringBoot整合阿里云短信服务的每一步过程 ...

  6. SpringBoot整合阿里云OSS

    文章目录 SpringBoot整合阿里云OSS 1.准备工作 1.1 开通"对象存储OSS"服务 1.2 创建Bucket 1.3 创建RAM子用户 2.SpringBoot整合阿 ...

  7. springboot整合阿里云oss上传的方法示例

    这篇文章主要介绍了springboot整合阿里云oss上传的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 OSS申请和 ...

  8. SpringBoot整合阿里云OSS上传文件

    一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...

  9. 一小时学会使用SpringBoot整合阿里云SMS短信服务

    1. 登录阿里云进入控制台 进入阿里云控制台,https://home.console.aliyun.com/在个人头像位置点击进入AccessKey管理: 2. 创建用户和用户组 创建用户组 添加完 ...

最新文章

  1. Python中fnmatch模块的使用
  2. Python异常处理体系简介(1)
  3. steam怎么看邮箱绑定的账号_怎么为QQ邮箱设置英文邮箱账号
  4. 前端月趋势榜:5 月最热门的 20 个前端开源项目 - 2105
  5. 5、shader混合(Blending)、雾
  6. background 旋转_第4章 旋转的圆弧(《Python趣味创意编程》教学视频)
  7. 【树链剖分】洛谷树(P3401)
  8. 【原】winform高效导出Excel带格式设置
  9. Struts2的struts.xml的配置细节
  10. linux 下 c++ 实现 netstat_Linux下基于签名技术的软件保护之实现流程
  11. mysql完备_mysql简单完备脚本
  12. Android通过广播接收者调用服务内方法
  13. html2canvas+jspdf 完美解决html导出且分页 解决图片显示不全问题
  14. mac地址厂商查询_3.15干货你的手机mac地址泄漏了吗
  15. VB进度条 游戏血条控件
  16. 常见的距离算法和相似度(相关系数)计算方法
  17. android支付宝sdk流程,支付宝SDK
  18. 开源项目——小Q聊天机器人V1.5
  19. linux下ps ef命令详解,linux命令中ps -ef详解
  20. ul li列表样式css,列表ul li 专用样式

热门文章

  1. pandas计算年化收益波动率
  2. opencv 双目摄像头拍照(分别左右镜头拍照)
  3. mysql 1236错误_mysql报1236错误解决方法
  4. 【CRM】ReferenceError: XXX is not defined at eval(eval at RunHandlerInternal)
  5. Python常用模块4-Python的datetime及time模块简介
  6. Webview 打开qq聊天窗口,申请进群
  7. c语言设计垃圾分类答题游戏,小程序案例源码001~垃圾分类+答题小程序效果演示...
  8. qt,QGraphicsView实现鼠标中键拖动图片,鼠标滚轮缩放、两个窗口联动左键选点等功能(c++pyqt两个版本)
  9. JeeCms使用笔记
  10. 书摘—你不可不知的心理策略