图片.png图片.png一、服务端SDK

1、简介

sdk的方式将api进行了进一步的封装,不用自己创建工具类。
我们可以基于服务端SDK编写代码来调用点播API,实现对点播产品和服务的快速操作。

2、功能介绍

  • SDK封装了对API的调用请求和响应,避免自行计算较为繁琐的 API签名。

  • 支持所有点播服务的API,并提供了相应的示例代码。

  • 支持7种开发语言,包括:Java、Python、PHP、.NET、Node.js、Go、C/C++。

  • 通常在发布新的API后,我们会及时同步更新SDK,所以即便您没有找到对应API的示例代码,也可以参考旧的示例自行实现调用。

    二、使用SDK

    1、安装

    参考文档:https://help.aliyun.com/document_detail/57756.html
    添加maven仓库的配置和依赖到pom ```java

    com.aliyun aliyun-java-sdk-core 4.3.3 com.aliyun aliyun-java-sdk-vod 2.15.5 com.google.code.gson gson 2.8.2

sonatype-nexus-staging Sonatype Nexus Staging https://oss.sonatype.org/service/local/staging/deploy/maven2/ true true

  1. <a name="BKqqD"></a>
  2. ## 2、初始化
  3. 参考文档:[https://help.aliyun.com/document_detail/61062.html](https://help.aliyun.com/document_detail/61062.html)<br />根据文档示例创建 AliyunVODSDKUtils.java
  4. ```java
  5. package com.atguigu.aliyunvod.util;
  6. public class AliyunVodSDKUtils {
  7. public static DefaultAcsClient initVodClient(String accessKeyId, String accessKeySecret) throws ClientException {
  8. String regionId = "cn-shanghai"; // 点播服务接入区域
  9. DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
  10. DefaultAcsClient client = new DefaultAcsClient(profile);
  11. return client;
  12. }
  13. }

3、创建测试类

创建 VodSdkTest.java

  1. package com.atguigu.aliyunvod;
  2. public class VodSdkTest {
  3. String accessKeyId = "你的accessKeyId";
  4. String accessKeySecret = "你的accessKeySecret";
  5. }

三、创建测试用例

参考文档:https://help.aliyun.com/document_detail/61064.html

1、获取视频播放凭证

根据文档中的代码,修改如下

  1. /**
  2. * 获取视频播放凭证
  3. * @throws ClientException
  4. */
  5. @Test
  6. public void testGetVideoPlayAuth() throws ClientException {
  7. //初始化客户端、请求对象和相应对象
  8. DefaultAcsClient client = AliyunVodSDKUtils.initVodClient(accessKeyId, accessKeySecret);
  9. GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
  10. GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();
  11. try {
  12. //设置请求参数
  13. request.setVideoId("视频ID");
  14. //获取请求响应
  15. response = client.getAcsResponse(request);
  16. //输出请求结果
  17. //播放凭证
  18. System.out.print("PlayAuth = " + response.getPlayAuth() + "\n");
  19. //VideoMeta信息
  20. System.out.print("VideoMeta.Title = " + response.getVideoMeta().getTitle() + "\n");
  21. } catch (Exception e) {
  22. System.out.print("ErrorMessage = " + e.getLocalizedMessage());
  23. }
  24. System.out.print("RequestId = " + response.getRequestId() + "\n");
  25. }

2、获取视频播放地址

  1. /**
  2. * 获取视频播放地址
  3. * @throws ClientException
  4. */
  5. @Test
  6. public void testGetPlayInfo() throws ClientException {
  7. //初始化客户端、请求对象和相应对象
  8. DefaultAcsClient client = AliyunVodSDKUtils.initVodClient(accessKeyId, accessKeySecret);
  9. GetPlayInfoRequest request = new GetPlayInfoRequest();
  10. GetPlayInfoResponse response = new GetPlayInfoResponse();
  11. try {
  12. //设置请求参数
  13. //注意:这里只能获取非加密视频的播放地址
  14. request.setVideoId("视频ID");
  15. //获取请求响应
  16. response = client.getAcsResponse(request);
  17. //输出请求结果
  18. List<GetPlayInfoResponse.PlayInfo> playInfoList = response.getPlayInfoList();
  19. //播放地址
  20. for (GetPlayInfoResponse.PlayInfo playInfo : playInfoList) {
  21. System.out.print("PlayInfo.PlayURL = " + playInfo.getPlayURL() + "\n");
  22. }
  23. //Base信息
  24. System.out.print("VideoBase.Title = " + response.getVideoBase().getTitle() + "\n");
  25. } catch (Exception e) {
  26. System.out.print("ErrorMessage = " + e.getLocalizedMessage());
  27. }
  28. System.out.print("RequestId = " + response.getRequestId() + "\n");
  29. }

参考文档:https://help.aliyun.com/document_detail/53406.html

三、文件上传测试 - 安装SDK

1、配置pom

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-core</artifactId>
  4. <version>4.3.3</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.aliyun.oss</groupId>
  8. <artifactId>aliyun-sdk-oss</artifactId>
  9. <version>3.1.0</version>
  10. </dependency>
  11. <dependency>
  12. <groupId>com.aliyun</groupId>
  13. <artifactId>aliyun-java-sdk-vod</artifactId>
  14. <version>2.15.2</version>
  15. </dependency>
  16. <dependency>
  17. <groupId>com.alibaba</groupId>
  18. <artifactId>fastjson</artifactId>
  19. <version>1.2.28</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>org.json</groupId>
  23. <artifactId>json</artifactId>
  24. <version>20170516</version>
  25. </dependency>
  26. <dependency>
  27. <groupId>com.google.code.gson</groupId>
  28. <artifactId>gson</artifactId>
  29. <version>2.8.2</version>
  30. </dependency>

2、安装非开源jar包

图片.png在本地Maven仓库中安装jar包:
下载视频上传SDK,解压,命令行进入lib目录,执行以下代码

  1. mvn install:install-file -DgroupId=com.aliyun -DartifactId=aliyun-sdk-vod-upload -Dversion=1.4.11 -Dpackaging=jar -Dfile=aliyun-java-vod-upload-1.4.11.jar

然后在pom中引入jar包

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-sdk-vod-upload</artifactId>
  4. <version>1.4.11</version>
  5. </dependency>

四、测试

1、创建测试文件

  1. package com.atguigu.aliyunvod;
  2. public class UploadTest {
  3. //账号AK信息请填写(必选)
  4. private static final String accessKeyId = "你的accessKeyId";
  5. //账号AK信息请填写(必选)
  6. private static final String accessKeySecret = "你的accessKeySecret";
  7. }

2、测试本地文件上传

  1. /**
  2. * 视频上传
  3. */
  4. @Test
  5. public void testUploadVideo(){
  6. //1.音视频上传-本地文件上传
  7. //视频标题(必选)
  8. String title = "3 - How Does Project Submission Work - upload by sdk";
  9. //本地文件上传和文件流上传时,文件名称为上传文件绝对路径,如:/User/sample/文件名称.mp4 (必选)
  10. //文件名必须包含扩展名
  11. String fileName = "E:/共享/资源/课程视频/3 - How Does Project Submission Work.mp4";
  12. //本地文件上传
  13. UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
  14. /* 可指定分片上传时每个分片的大小,默认为1M字节 */
  15. request.setPartSize(1 * 1024 * 1024L);
  16. /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/
  17. request.setTaskNum(1);
  18. /* 是否开启断点续传, 默认断点续传功能关闭。当网络不稳定或者程序崩溃时,再次发起相同上传请求,可以继续未完成的上传任务,适用于超时3000秒仍不能上传完成的大文件。
  19. 注意: 断点续传开启后,会在上传过程中将上传位置写入本地磁盘文件,影响文件上传速度,请您根据实际情况选择是否开启*/
  20. request.setEnableCheckpoint(false);
  21. UploadVideoImpl uploader = new UploadVideoImpl();
  22. UploadVideoResponse response = uploader.uploadVideo(request);
  23. System.out.print("RequestId=" + response.getRequestId() + "\n"); //请求视频点播服务的请求ID
  24. if (response.isSuccess()) {
  25. System.out.print("VideoId=" + response.getVideoId() + "\n");
  26. } else {
  27. /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */
  28. System.out.print("VideoId=" + response.getVideoId() + "\n");
  29. System.out.print("ErrorCode=" + response.getCode() + "\n");
  30. System.out.print("ErrorMessage=" + response.getMessage() + "\n");
  31. }
  32. }