目录
1、基本使用
1.1、手动上传视频
1.2、配置转码模板
1.3、获取 视频播放地址 及 web播放器代码
2、服务器 SDK
2.1、安装(引入依赖)
2.2、初始化
2.3、获取视频播放地址
问题:java.lang.NoSuchMethodError: com.google.gson.JsonParser.parseString(Ljava/lang/String;)Lcom/google/gson/JsonElement;
2.4、视频播放凭证
3、上传 SDK
3.1、安装(引入依赖)
3.2、上传视频
媒资库 > 音视频 > 单击 上传音/视频 > 单击 添加音/视频 > 选择文件,设置转码模板及其分类 > 单击 开始上传
若为第一次添加,需要配置存储管理,配置管理 > 媒资管理配置 > 存储管理,若已开通 OSS 服务会自动添加一个存储管理,将其设为默认即可。
若没有配置转码模板,默认为不转码
配置管理 > 媒体处理配置 > 转码模板组 > 单击 添加转码模板组 > 选择模板类型 > 设置好后保存即可
这里讲一下 普通转码模板,可以设置视频 清晰度 和 参数,若封装格式为 hls,可以在下面 高级参数 中设置 视频加密(HLS加密方式,默认开启阿里云私有加密,阿里云私有加密暂不支持iOS系统的网页端播放),加密后无法通过 视频播放地址 直接播放,而是要通过视频 ID 获取凭证后播放。
媒资库 > 音视频 > 在对应视频行的操作中点击管理,在跳出来的页面即可获取
官方文档:安装
com.aliyun
aliyun-java-sdk-core
4.6.0
com.aliyun
aliyun-java-sdk-vod
2.16.11
com.alibaba
fastjson
1.2.83
com.aliyun
aliyun-java-sdk-kms
2.10.1
官方文档:初始化
public class InitObject {
/**
* 初始化 AccessKey
* @param accessKeyId
* @param accessKeySecret
* @return
* @throws ClientException
*/
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;
}
}
官方文档:音视频播放
下面的方法只能用于获取没有加密的视频的播放地址,若获取加密视频的,会报错:Exception in thread "main" com.aliyuncs.exceptions.ClientException: Forbidden.AliyunVoDEncryption : Currently only the AliyunVoDEncryption stream exists, you must use the Aliyun player to play or set the value of ResultType to Multiple.,需要先获取视频播放凭证。
public static void main(String[] args) throws ClientException {
// 创建初始化对象
DefaultAcsClient client = InitObject.initVodClient("accessKeyId", "accessKeySecret");
// 创建获取视频地址的 request 和 response
GetPlayInfoRequest request = new GetPlayInfoRequest();
GetPlayInfoResponse response = new GetPlayInfoResponse();
// 向request对象设置视频id
request.setVideoId("videoId");
// 调用初始化对象的方法获取视频播放地址
response = client.getAcsResponse(request);
List 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");
}
解决方法:改变 gson 的版本,这里改到 2.8.6 版本即可运行
官方文档:音视频播放
/**
* 获取视频凭证
* @throws ClientException
*/
@Test
public void testGetPlayAuth() throws ClientException {
// 根据视频id获取播放凭证
// 创建初始化对象
DefaultAcsClient client = InitObject.initVodClient("accessKeyId", "accessKeySecret");
// 创建获取视频凭证的 request 和 response
GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
// 向request对象设置视频id
request.setVideoId("videoId");
// 调用初始化对象的方法获取视频播放凭证
response = client.getAcsResponse(request);
//播放凭证
System.out.print("PlayAuth = " + response.getPlayAuth() + "\n");
//VideoMeta信息
System.out.print("VideoMeta.Title = " + response.getVideoMeta().getTitle() + "\n");
}
官方文档:Java上传SDK
先引入不需要手动下载的依赖,这里我修改了一下 fastjson 的版本
com.aliyun
aliyun-java-sdk-core
4.5.1
com.aliyun.oss
aliyun-sdk-oss
3.10.2
com.aliyun
aliyun-java-sdk-vod
2.16.11
com.alibaba
fastjson
1.2.83
org.json
json
20170516
com.google.code.gson
gson
2.8.2
然后引入要下载的依赖。首先要下载 Java 上传 SDK,下载地址:SDK简介与下载,下载后解压,进入解压后的文件夹,进入 VODUploadDemo-java-1.4.15/lib 目录,打开 cmd,输入下面指令将 aliyun-java-vod-upload-1.4.15.jar 安装到本地 Maven 仓库
mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.15 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.15.jar
说明:
-DgroupId 和 -DartifactId 是坐标
-Dversion 是版本
-Dpackaging 是文件类型,jar 就是 jar 包
-Dfile 是文件名
然后引入该依赖即可
com.aliyun
aliyun-sdk-vod-upload
1.4.15
官方文档:Java上传SDK
/**
* 本地上传视频
*/
@Test
public void testUploadVideo() {
String accessKeyId = "";
String accessKeySecret = "";
String title = "本地上传1"; // 上传的文件在阿里云显示的名字
String fileName = "C:\\Users\\zhang\\Desktop\\2\\jump.mp4"; // 本地文件路径和名称
UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
/* 可指定分片上传时每个分片的大小,默认为2M字节 */
request.setPartSize(2 * 1024 * 1024L);
/* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/
request.setTaskNum(1);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadVideoResponse response = uploader.uploadVideo(request);
System.out.print("RequestId=" + response.getRequestId() + "\n"); //请求视频点播服务的请求ID
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");
}
}