目录
- 前言
- 一、目的
- 二、实现步骤
- 1.准备操作
- 2.主要使用模块
- 2.1. 上传音频
- 2.2. 添加转码设置
- 3.搭建视频点播环境
- 3.1.配置Maven仓库
- 3.2.添加jar依赖
- 3.3.上传视频
- 3.4.初始化点播服务
- 3.5.根据视频ID获取视频地址
- 3.6.根据视频ID删除阿里云中视频
- 3.7.根据视频ID集合删除
- 三、问题
- 1.阿里云问题
- 1.1.原因
- 1.2.解决方法
- 2.Nginx问题
- 2.1.原因
- 2.2.解决办法
- 四、总结
前言
视频点播(ApsaraVideo VoD,简称VoD)是集视频采集、编辑、上传、媒体资源管理、自动化转码处理(窄带高清™)、视频审核分析、分发加速于一体的一站式音视频点播解决方案。一、目的
通过Java实现将本地视频上传到阿里云视频点播仓库,实现云服务存储的目的(免费)
二、实现步骤
1.准备操作
登录阿里云,找到《视频点播》选择“按流量计费”进行注册开通
2.主要使用模块
2.1. 上传音频
进入点播控制台,找到媒资库=》音/视频,上传的视频都存放在此
2.2. 添加转码设置
作用:如果不添加转码设置,用户上传的视频播放时播放的类型就是原画质,配置转码可设置视频的清晰度,播放格式
步骤:进入点播控制台,找到配置管理=》媒体处理配置=》转码模板组=》添加转码模板组
3.搭建视频点播环境
3.1.配置Maven仓库
<repositories><repository><id>sonatype-nexus-staging</id><name>Sonatype Nexus Staging</name><url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled></snapshots></repository>
</repositories>
3.2.添加jar依赖
<dependencies><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId></dependency><dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-vod</artifactId></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId></dependency><dependency><groupId>org.json</groupId><artifactId>json</artifactId></dependency><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-sdk-vod-upload</artifactId></dependency>
</dependencies>
3.3.上传视频
//原视频名称
String fileName = file.getOriginalFilename();
//阿里云上视频显示名称
String title=fileName.substring(0,fileName.lastIndexOf("."));
//文件输入流
InputStream inputStream = file.getInputStream();
//配置上传文件对象:KEY和SCERET填写自己阿里云的密钥
UploadStreamRequest request = new UploadStreamRequest(KEY, SCERET, title, fileName, inputStream);
UploadVideoImpl uploader = new UploadVideoImpl();
//实现上传
UploadStreamResponse response = uploader.uploadStream(request);
//可通过如下代码获得存储在阿里云上的视频id
String videoId= response.getVideoId();
3.4.初始化点播服务
根据阿里云账号的key和Secret获取一个client初始对象
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;
}
3.5.根据视频ID获取视频地址
//1.创建初始化对象
DefaultAcsClient client = InitVodClient.initVodClient(KEY,SCERET);
//2.创建获取视频地址request和response
GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
//3.向request中设置视频ID
request.setVideoId(id);
//4.调用初始化对象里面的方法,传递request
GetVideoPlayAuthResponse response = client.getAcsResponse(request);
//Base信息
String playAuth = response.getPlayAuth();
3.6.根据视频ID删除阿里云中视频
//创建client初始对象
DefaultAcsClient client = InitVodClient.initVodClient(KEY,SCERET);
//创建删除request对象
DeleteVideoRequest request = new DeleteVideoRequest();
//设置视频id到request中
request.setVideoIds(id);
//调用client对象引用request方法
client.getAcsResponse(request);
3.7.根据视频ID集合删除
//创建client初始对象
DefaultAcsClient client = InitVodClient.initVodClient(KEY,SCERET);
//创建删除request对象
DeleteVideoRequest request = new DeleteVideoRequest();
//讲视频id集合格式化:1,2,3
String videoIds = StringUtils.join(videoList.toArray(),",");
//设置视频id到request中
request.setVideoIds(videoIds);
//调用client对象引用request方法
client.getAcsResponse(request);
三、问题
上传视频太大导致上传失败
1.阿里云问题
1.1.原因
阿里云视频点播默认上传视频大小只有1MB
1.2.解决方法
在application中添加上传文件大小配置即可
# 最大单个上传文件的大小,默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大值总文件上传文件的大小,默认1M
spring.servlet.multipart.max-request-size=1024MB
2.Nginx问题
2.1.原因
Nginx中也有默认上传文件大小,默认为1M
2.2.解决办法
在Nginx的配置文件nginx.conf中找到http{},在里面加入配置可上传文件大小
http {include mime.types;default_type application/octet-stream;client_max_body_size 1024m;...
}
四、总结
通过阿里云视频点播实现视频上传,总体来说实现较为简单,方法固定只需要通过更改不同的request对象即可完成获取视频信息、删除视频等功能。且以阿里云目前在国内的“统治力”,上传的文件安全性完全可以保障,懂得都懂,还是免费的。。。