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

1、引入依赖

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.6.0</version>
</dependency>
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId><version>2.16.5</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、初始化配置

#你自己的阿里云keyId
aliyun.vod.file.keyid=xxxxxxxxx
#你自己的阿里云密钥
aliyun.vod.file.keysecret=xxxxxxxxxx#max-file-size 是单个文件大小
#max-request-size 是设置总上传的数据大小
spring.servlet.multipart.max-file-size=1024MB
spring.servlet.multipart.max-request-size=1024MB

3、工具包

3.1、常量类

package com.zhmsky.vod.utils;import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;/*** @author zhmsky* @date 2022/4/29 17:22*/
@Component
public class VodConstant implements InitializingBean {@Value("${aliyun.vod.file.keyid}")private String accessKeyId;@Value("${aliyun.vod.file.keysecret}")private String accessKeySecret;public static String ACCESS_KEYID;public static String ACCESS_KEYSECRET;//在属性初始化后自动执行@Overridepublic void afterPropertiesSet() throws Exception {ACCESS_KEYID = accessKeyId;ACCESS_KEYSECRET = accessKeySecret;}
}

3.2、AccessKey初始化

package com.zhmsky.vod.utils;import com.aliyun.oss.ClientException;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.profile.DefaultProfile;/*** @author zhmsky* @date 2022/4/28 16:25*/
public class InitVodClient {//填入AccessKey信息public 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;}
}

4、阿里云视频点播服务(Vod)实现视频上传、删除

4.1、service(

package com.zhmsky.vod.service;import org.springframework.web.multipart.MultipartFile;import java.util.List;/*** @author zhmsky* @date 2022/4/29 16:58*/
public interface VodService {/*** 上传本地文件至阿里云* @return*/String uploadLocalVideoToAliYun(MultipartFile file);/*** 根据视频id删除阿里云视频* @param videoId*/boolean removeVideo(String videoId);/*** 批量删除阿里云视频* @param videoIdList*/boolean removeBatchVideo(List<String> videoIdList);
}

4.2 impl

package com.zhmsky.vod.service.impl;import com.aliyun.vod.upload.impl.UploadVideoImpl;
import com.aliyun.vod.upload.req.UploadStreamRequest;
import com.aliyun.vod.upload.resp.UploadStreamResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.vod.model.v20170321.DeleteVideoRequest;
import com.zhmsky.exception.MyException;
import com.zhmsky.vod.service.VodService;
import com.zhmsky.vod.utils.InitVodClient;
import com.zhmsky.vod.utils.VodConstant;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;import java.io.IOException;
import java.io.InputStream;
import java.util.List;/*** @author zhmsky* @date 2022/4/29 16:59*/
@Service
public class VodServiceImpl implements VodService {/*** 上传本地视频文件至阿里云* @return videoId 视频id*/@Overridepublic String uploadLocalVideoToAliYun(MultipartFile file) {String accessKeyId= VodConstant.ACCESS_KEYID;String accessKeySecret=VodConstant.ACCESS_KEYSECRET;//获取文件原始名称String fileName=file.getOriginalFilename();String title=fileName.substring(0,fileName.lastIndexOf("."));InputStream inputStream = null;try {inputStream = file.getInputStream();} catch (IOException e) {e.printStackTrace();}UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);UploadVideoImpl uploader = new UploadVideoImpl();UploadStreamResponse response = uploader.uploadStream(request);String videoId="";if (response.isSuccess()) {videoId=response.getVideoId();} else { //如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因videoId=response.getVideoId();}return videoId;}/*** @description 根据视频id删除阿里云视频* @param videoId*/@Overridepublic boolean removeVideo(String videoId) {//初始化对象DefaultAcsClient client = InitVodClient.initVodClient(VodConstant.ACCESS_KEYID, VodConstant.ACCESS_KEYSECRET);//创建删除视频的request对象DeleteVideoRequest request = new DeleteVideoRequest();//向request对象中设置视频idrequest.setVideoIds(videoId);//调用初始化对象的方法实现删除try {client.getAcsResponse(request);return true;} catch (ClientException e) {e.printStackTrace();return false;}}/*** 批量删除阿里云视频* @param videoIdList*/@Overridepublic boolean removeBatchVideo(List<String> videoIdList) {String videoList = StringUtils.join(videoIdList.toArray(), ",");//初始化对象DefaultAcsClient client = InitVodClient.initVodClient(VodConstant.ACCESS_KEYID, VodConstant.ACCESS_KEYSECRET);//创建删除视频的request对象DeleteVideoRequest request = new DeleteVideoRequest();//向request对象中设置视频idrequest.setVideoIds(videoList);//调用初始化对象的方法实现删除try {client.getAcsResponse(request);return true;} catch (ClientException e) {e.printStackTrace();return false;}}
}

4.3、controller

package com.zhmsky.vod.controller;import com.zhmsky.result.Result;
import com.zhmsky.result.ResultUtil;
import com.zhmsky.vod.service.VodService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;import java.util.List;/*** @author zhmsky* @date 2022/4/29 16:56*/
@RestController
@RequestMapping("/eduVod/video")
@CrossOrigin
@Api("阿里云视频点播服务")
public class VodController {@Autowiredprivate VodService vodService;@PostMapping("/upload")@ApiOperation("上传本地文件到阿里云")public Result<String> uploadLocalVideo(MultipartFile file){String videoId = vodService.uploadLocalVideoToAliYun(file);return new ResultUtil<String>().setData(videoId);}@DeleteMapping("/deleteVideo/{videoId}")@ApiOperation("删除阿里云视频——单个")public Result<String> deleteVideoForAliYun(@PathVariable String videoId){boolean b = vodService.removeVideo(videoId);if(b){return new ResultUtil<String>().setSuccessMsg("视频删除成功!");}else{return new ResultUtil<String>().setErrorMsg("视频删除失败!");}}@ApiOperation("批量删除阿里云视频")@DeleteMapping("/deleteBatchVideo")public Result<String> deleteBatchVideo(@RequestParam("videoIdList") List<String> videoIdList){boolean b = vodService.removeBatchVideo(videoIdList);if(b){return new ResultUtil<String>().setSuccessMsg("批量删除成功!");}else {return new ResultUtil<String>().setErrorMsg("批量删除失败!");}}
}

4.4、前端html

       <el-form-item label="上传视频"><el-upload<!-- 上传成功过后执行 -->:on-success="handleVodUploadSuccess"<!-- 删除成功过后执行 -->:on-remove="handleVodRemove":before-remove="beforeVodRemove"<!-- 文件超过大小后执行 -->:on-exceed="handleUploadExceed":file-list="fileList":action="BASE_API + '/eduVod/video/upload'":limit="1"class="upload-demo"><el-button size="small" type="primary">上传视频</el-button><el-tooltip placement="right-end"><div slot="content">最大支持1G,<br />支持3GP、ASF、AVI、DAT、DV、FLV、F4V、<br />GIF、M2T、M4V、MJ2、MJPEG、MKV、MOV、MP4、<br />MPE、MPG、MPEG、MTS、OGG、QT、RM、RMVB、<br />SWF、TS、VOB、WMV、WEBM 等视频格式上传</div><i class="el-icon-question" /></el-tooltip></el-upload></el-form-item>

5、阿里云视频点播服务实现在线视频播放

5.1、service

   /*** 根据视频id获取视频的播放凭证* @param videoId* @return*/String getPlayRule(String videoId);

5.2、impl

 /*** 根据视频id获取视频的播放凭证* @param videoId* @return 视频播放凭证*/@Overridepublic String getPlayRule(String videoId) {//创建对象DefaultAcsClient client = InitVodClient.initVodClient(VodConstant.ACCESS_KEYID, VodConstant.ACCESS_KEYSECRET);//获取视频凭证的request和response对象GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();//向request设置videoIdrequest.setVideoId(videoId);//调用初始化对象方法得到凭证try {response=client.getAcsResponse(request);} catch (ClientException e) {e.printStackTrace();}return response.getPlayAuth();}

5.3 controller

    @GetMapping("/getAliPlayRule/{videoId}")@ApiOperation("根据视频id获取视频的播放凭证")public Result<String> getAliPlayRule(@PathVariable String videoId){String playRule = vodService.getPlayRule(videoId);return new ResultUtil<String>().setData(playRule);}

5.4、前端

<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 vedioApi from '@/api/vedio'
export default {//应用video布局layout: 'video',//异步方式调用asyncData({ params, error }) {// params.vedioId等价于this.$route.params.vedioId(获取路径变量)return vedioApi.getPlayRule(params.vedioId).then(response => {return {playAuth: response.data.result,vid:params.vedioId}})},mounted(){//页面渲染之后new 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>

集成文档
在线配置
功能展示(包括广告、弹幕等)

springboot整合阿里云视频点播服务Vod——实现视频上传、删除、播放相关推荐

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

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

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

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

  3. 阿里云视频点播服务Vod工具类——实现视频上传、删除、播放

    阿里云视频点播服务Vod工具类--实现视频上传.删除.播放 阿里云视频点播服务Vod工具类 maven依赖 工具类实现 工具类的测试 获取视频 1. 获取单个视频的播放地址和ID: 2. 获取所有视频 ...

  4. 阿里云视频点播-URL批量拉取上传(调整为多个视频上传)

    阿里云视频点播之URL批量拉取上传(调整为多个视频上传) 项目引入阿里云视频点播PHP-SDK URL批量拉取上传(调整为多个视频上传) 项目引入阿里云视频点播PHP-SDK 背景:2021年乐视云的 ...

  5. 阿里云视频点播(VOD)aliplayer获取视频播放状态(播放或暂停)

    .getStatus()的方法可以获取视频播放状态 获取播放器状态,包含的值: 'init' 'ready' 'loading' 'play' 'pause' 'playing' 'waiting' ...

  6. easyswoole上传视频到阿里云(继承上面easyswoole视频上传大小限制取消代码)

    参考网址 https://help.aliyun.com/document_detail/61388.html 在easuswoole根目录下面的ini文件夹下,新建aliyun.ini access ...

  7. 阿里云oss服务操作文件,上传下载生成链接删除通知等

    目录 oss关键字解读 pom.xml引入jar包 第1,后台提供上传文件的接口,把文件上传到oss服务器

  8. Spring Boot集成阿里云视频点播服务的过程记录

    阿里云视频点播 效果预览 视频点播 视频点播概述 功能 优势 流程 环境准备 开通视频点播 创建RAM用户并授权 上传SDK 上传流程 下载上传SDK 安装上传SDK 集成Java上传SDK 异常说明 ...

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

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

最新文章

  1. AFNetworking post请求遇到问题解决过程
  2. LeetCode Linked List Cycle II
  3. boost::fusion::for_each用法的测试程序
  4. C++ Function语意学
  5. 评审恩仇录——我为什么愿意执行代码评审
  6. [Swift]多维数组的表示和存储:N维数组映射到一维数组(一一对应)!
  7. 区块链技术指南笔记(二):区块链技术
  8. Javascript--节点类型
  9. linux nvidia驱动安装rpm,Fedora 下安装NVIDIA显卡驱动
  10. 【ES】es 冻结的索引如何查询
  11. Netty-2-服务端创建多个handler
  12. 使用记事本编写xml文件保存出现异常原因
  13. 国内随时接收发送谷歌邮箱
  14. mysql 汉字笔画排序规则_SQL Server与MySQL中排序规则与字符集相关知识的一点总结...
  15. 实现调用阿里云API第二章——API调用实战(全球IP地址归属地查询)
  16. 使用PEAP实现802.1X
  17. [web效果实现-3] 拼音排序通讯录实现
  18. ML - Regression
  19. 数字金字塔php,数字金字塔
  20. win10配置python虚拟环境的路径

热门文章

  1. Eureka Server的REST端点
  2. 企业端点网络安全行业调研报告 - 市场现状分析与发展前景预测
  3. 计算机社团打字比赛规则,金手指打字比赛策划(最终版)
  4. PowerTool kEvP.sys=V4.2 内核拒绝服务漏洞
  5. 基于ROS节点多机协同(无人机/无人车)分析
  6. 如何用Python 求函数 y = sinx 在区间[0, pi/2]上的弧长
  7. DDOS压力测试平台源码
  8. 单模、多模有什么区别
  9. 移动端用户放大字体导致样式出问题
  10. 计算机组成原理基础知识总结