1、引入依赖视频点播(ApsaraVideo VoD,简称VoD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理(窄带高清™)、视频审核分析、分发加速于一体的一站式音视频点播解决方案。
阿里云视频点播服务技术文档教程
2、初始化配置com.aliyun aliyun-java-sdk-core 4.6.0 com.aliyun aliyun-java-sdk-vod 2.16.5 com.alibaba fastjson 1.2.62 com.aliyun aliyun-java-sdk-kms 2.10.1
#你自己的阿里云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=1024MB3、工具包 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;
@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;
//在属性初始化后自动执行
@Override
public 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;
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、service
package com.zhmsky.vod.service;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
public interface VodService {
String uploadLocalVideoToAliYun(MultipartFile file);
boolean removeVideo(String videoId);
boolean removeBatchVideo(List videoIdList);
}
4.1 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;
@Service
public class VodServiceImpl implements VodService {
@Override
public 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;
}
@Override
public boolean removeVideo(String videoId) {
//初始化对象
DefaultAcsClient client = InitVodClient.initVodClient(VodConstant.ACCESS_KEYID, VodConstant.ACCESS_KEYSECRET);
//创建删除视频的request对象
DeleteVideoRequest request = new DeleteVideoRequest();
//向request对象中设置视频id
request.setVideoIds(videoId);
//调用初始化对象的方法实现删除
try {
client.getAcsResponse(request);
return true;
} catch (ClientException e) {
e.printStackTrace();
return false;
}
}
@Override
public boolean removeBatchVideo(List videoIdList) {
String videoList = StringUtils.join(videoIdList.toArray(), ",");
//初始化对象
DefaultAcsClient client = InitVodClient.initVodClient(VodConstant.ACCESS_KEYID, VodConstant.ACCESS_KEYSECRET);
//创建删除视频的request对象
DeleteVideoRequest request = new DeleteVideoRequest();
//向request对象中设置视频id
request.setVideoIds(videoList);
//调用初始化对象的方法实现删除
try {
client.getAcsResponse(request);
return true;
} catch (ClientException e) {
e.printStackTrace();
return false;
}
}
}
5、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;
@RestController
@RequestMapping("/eduVod/video")
@CrossOrigin
@Api("阿里云视频点播服务")
public class VodController {
@Autowired
private VodService vodService;
@PostMapping("/upload")
@ApiOperation("上传本地文件到阿里云")
public Result uploadLocalVideo(MultipartFile file){
String videoId = vodService.uploadLocalVideoToAliYun(file);
return new ResultUtil().setData(videoId);
}
@DeleteMapping("/deleteVideo/{videoId}")
@ApiOperation("删除阿里云视频——单个")
public Result deleteVideoForAliYun(@PathVariable String videoId){
boolean b = vodService.removeVideo(videoId);
if(b){
return new ResultUtil().setSuccessMsg("视频删除成功!");
}else{
return new ResultUtil().setErrorMsg("视频删除失败!");
}
}
@ApiOperation("批量删除阿里云视频")
@DeleteMapping("/deleteBatchVideo")
public Result deleteBatchVideo(@RequestParam("videoIdList") List videoIdList){
boolean b = vodService.removeBatchVideo(videoIdList);
if(b){
return new ResultUtil().setSuccessMsg("批量删除成功!");
}else {
return new ResultUtil().setErrorMsg("批量删除失败!");
}
}
}
6、html
:on-success="handleVodUploadSuccess" :on-remove="handleVodRemove" :before-remove="beforeVodRemove" :on-exceed="handleUploadExceed" :file-list="fileList" :action="BASE_API + '/eduVod/video/upload'" :limit="1" > 上传视频 最大支持1G,
支持3GP、ASF、AVI、DAT、DV、FLV、F4V、
GIF、M2T、M4V、MJ2、MJPEG、MKV、MOV、MP4、
MPE、MPG、MPEG、MTS、OGG、QT、RM、RMVB、
SWF、TS、VOB、WMV、WEBM 等视频格式上传



