阿里云OSS视频文件迁移视频点播,并导出媒资excel表
一 介绍
1 OSS 是什么
OSS 相当于硬盘、便宜容量大,存储不经常使用的文件。
官网介绍: https://help.aliyun.com/document_detail/31817.html?spm=a2c4g.11174359.6.544.51ea1ea9aXOD2K
2 视频点播是什么
视频点播相当于存储视频文件的CND,集鉴权、播放、管理于一体的播放系统。
官网介绍: https://help.aliyun.com/document_detail/51236.html?spm=a2c4g.11186623.6.542.1b97152aQrphzw
3 制作背景
与阿里云合作,视频媒资量过于巨大,无法通过阿里云平台上传,只能通过寄OSS硬盘拷贝,然后将OSS寄回阿里,编写OSS迁移到视频点播的代码上传即可。
文档信息
阿里云磁盘(读文件)
读文件: https://help.aliyun.com/video_detail/39691.html?spm=5176.10695662.1996646101.searchclickresult.2f2d36b9m7F1K4
阿里云点播(写文件)
写文件: https://help.aliyun.com/document_detail/64148.html?spm=a2c4g.11186623.6.1066.42976a58M4A9av」
阿里云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>
<dependency>
<groupId>com.konka.util</groupId>
<artifactId>aliyun-java-vod-upload</artifactId>
<version>1.4.12</version>
</dependency>
<!-- 阿里云同步结束 -->
<!-- excel处理 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
二 流程
1 迁移流程
注意:
1 确保OSS和视频点播和ECS(自己的云机器)在一个局域网内、走内网不消耗网络流量。
解释:
1 将OSS文件批量查询、并下载到本地ECS服务器
2 将本地下载好的文件上传视频点播(注意配置好转码模板、分类信息等)
三 代码实现
1 UploadVideoServiceImpl业务代码
@Slf4j
@Service
public class UploadVideoServiceImpl implements UploadVideoService {
public final static List<Suplier> suplierlist = new ArrayList() {
{
add(new Suplier("shulang", "供应商1", 8L));
add(new Suplier("jiaoyu", "供应商2", 19L));
add(new Suplier("huanggang", "供应商3", 6020L));
add(new Suplier("yang", "供应商4", 21L));
}};
@Override
public void upload(ABInDTO inDTO) {
Integer start = inDTO.getStart();
Integer end = inDTO.getEnd();
// 1 赛选所有
List<OSSObjectSummary> finds = OSSUploadVideoDemo.select();
log.info("查询总数为:{}", finds.size());
if (start == null) {
start = 0;
}
if (end == null) {
end = finds.size();
}
log.info("开始和结束的数量start:{},end:{}", start, end);
Integer count = 0;
// 2 遍历上传到视频点播
for (int i = 0; i < finds.size(); i++) {
// 过滤掉
if (start <= i && end >= i) {
log.info("开始第:{}个-区间共:{}-{}个,总共:{}", i, start, end, finds.size());
OSSObjectSummary s = finds.get(i);
try {
// 3 上传视频点播
log.info("\t-----------------------start");
log.info("\tgetKey " + s.getKey());
OSSUploadVideoDemo.upload(s.getKey());
log.info("\t上传视频点播完毕getBucketName " + s.getBucketName());
} catch (Exception e) {
log.error("上传视频点播出错了1");
log.info("\tgetKey " + s.getKey());
}
count++;
log.info("\t-----------------------end");
}
}
}
public static void main(String[] args) throws Exception {
OSSUploadVideoDemo.upload(null);
}
}
2 Suplier供应商表
@Data
public class Suplier {
// OSS文件夹名称***
private String bucketName;
private String nickName; // 备注名称
private Long CateId; // 分类id
public Suplier(String bucketName, String nickName, Long cateId) {
this.bucketName = bucketName;
this.nickName = nickName;
CateId = cateId;
}
}