全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
视频点播

Java上传SDK

更新时间:2018-05-31 20:57:39

环境要求

Java 6+

SDK安装

以 1.3.0 版本为例,步骤如下:

1.下载Java示例代码VODUploadDemo-java-1.3.0.zip开发包(包含示例代码和所需jar包), 见 视频上传SDK下载

2.将解压后lib目录下的所有jar文件拷贝至您的项目中;

3.SDK依赖的jar包版本说明

注意: 以下列举出部分核心依赖jar包的版本,您可直接在您的项目中添加maven依赖,也可以将VODUploadDemo-java-1.3.0.zip包中的所有jar包引入您的项目中使用。

  1. <dependency>
  2. <groupId>com.aliyun</groupId>
  3. <artifactId>aliyun-java-sdk-core</artifactId>
  4. <version>3.7.1</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.11.0</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>

4.使用IDE开发时引用jar包的方法,以Eclipse和IntelliJ IDEA为例说明如下:

4.1 在Eclipse中选择您的工程,右击 -> Properties -> Java Build Path -> Add JARs;

4.2 在IntelliJ IDEA中打开您的工程,File -> Project Structure -> Modules -> 右侧Dependencies -> + -> JARs or directories

5.选中您在第一步拷贝的所有jar文件;

经过以上几步,您就可以在Eclipse或IntelliJ IDEA项目中使用VODUpload Java SDK。

示例程序

以下Java示例代码演示了如何在服务端上传文件至视频点播。目前支持两种方式上传:

  • 1.上传本地文件,使用分片上传,并支持断点续传,参见testUploadVideo函数。

    1.1 当断点续传关闭时,最大支持上传任务执行时间为3000秒,具体可上传文件大小与您的网络带宽及磁盘读写能力有关。

    1.2 当断点续传开启时,最大支持48.8TB的单个文件,注意,断点续传开启后,上传任务执行过程中,同时会将当前上传位置写入本地磁盘文件,影响您上传文件的速度,请您根据文件大小选择是否开启

  • 2.上传网络流,可指定文件URL进行上传,不支持断点续传,最大支持5GB的单个文件。参见testUploadURLStream函数。

  • 3.上传文件流,可指定本地文件进行上传,不支持断点续传,最大支持5GB的单个文件。参见testUploadFileStream函数。

注:请替换示例中的必选参数,示例中的可选参数如果您不需要设置,请将其删除,以免设置无效参数值与您的预期不符。

将VODUploadDemo-java-1.3.0.zip开发包解压后, 在sample目录下的UploadVideoDemo.java为示例程序, 如下:

  1. public class UploadVideoDemo {
  2. //账号AK信息请填写(必选)
  3. private static final String accessKeyId = "";
  4. //账号AK信息请填写(必选)
  5. private static final String accessKeySecret = "";
  6. public static void main(String[] args) {
  7. //视频标题(必选)
  8. String title = "测试标题";
  9. //1.本地文件上传和文件流上传时,文件名称为上传文件绝对路径,如:/User/sample/文件名称.mp4 (必选) 2.网络流上传时,文件名称为源文件名,如文件名称.mp4(必选)。任何上传方式文件名必须包含扩展名
  10. String fileName = "测试文件名称.mp4";
  11. //本地文件上传
  12. testUploadVideo(accessKeyId, accessKeySecret, title, fileName);
  13. //待上传视频的网络流地址
  14. String url = "http://video.sample.com/sample.mp4";
  15. //网络流上传
  16. testUploadURLStream(accessKeyId, accessKeySecret, title, fileName, url);
  17. //文件流上传
  18. testUploadFileStream(accessKeyId, accessKeySecret, title, fileName);
  19. }
  20. /**
  21. * 本地文件上传接口
  22. * @param accessKeyId
  23. * @param accessKeySecret
  24. * @param title
  25. * @param fileName
  26. */
  27. private static void testUploadVideo(String accessKeyId, String accessKeySecret, String title, String fileName) {
  28. UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
  29. /* 可指定分片上传时每个分片的大小,默认为1M字节 */
  30. request.setPartSize(1 * 1024 * 1024L);
  31. /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/
  32. request.setTaskNum(1);
  33. /* 是否开启断点续传, 默认断点续传功能关闭。当网络不稳定或者程序崩溃时,再次发起相同上传请求,可以继续未完成的上传任务,适用于超时3000秒仍不能上传完成的大文件。
  34. 注意: 断点续传开启后,会在上传过程中将上传位置写入本地磁盘文件,影响文件上传速度,请您根据实际情况选择是否开启*/
  35. request.setEnableCheckpoint(false);
  36. /* OSS慢请求日志打印超时时间,是指每个分片上传时间超过该阈值时会打印debug日志,如果想屏蔽此日志,请调整该阈值。单位: 毫秒,默认为300000毫秒*/
  37. //request.setSlowRequestsThreshold(300000L);
  38. /* 可指定每个分片慢请求时打印日志的时间阈值,默认为300s*/
  39. //request.setSlowRequestsThreshold(300000L);
  40. /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/
  41. //request.setIsShowWaterMark(true);
  42. /* 设置上传完成后的回调URL(可选),建议通过点播控制台配置消息监听事件,参见文档 https://help.aliyun.com/document_detail/57029.html */
  43. //request.setCallback("http://callback.sample.com");
  44. /* 视频分类ID(可选) */
  45. //request.setCateId(0);
  46. /* 视频标签,多个用逗号分隔(可选) */
  47. //request.setTags("标签1,标签2");
  48. /* 视频描述(可选) */
  49. //request.setDescription("视频描述");
  50. /* 封面图片(可选) */
  51. //request.setCoverURL("http://cover.sample.com/sample.jpg");
  52. /* 模板组ID(可选) */
  53. //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d");
  54. /* 存储区域(可选) */
  55. //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
  56. UploadVideoImpl uploader = new UploadVideoImpl();
  57. UploadVideoResponse response = uploader.uploadVideo(request);
  58. System.out.print("RequestId=" + response.getRequestId() + "\n"); //请求视频点播服务的请求ID
  59. if (response.isSuccess()) {
  60. System.out.print("VideoId=" + response.getVideoId() + "\n");
  61. } else {
  62. /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */
  63. System.out.print("VideoId=" + response.getVideoId() + "\n");
  64. System.out.print("ErrorCode=" + response.getCode() + "\n");
  65. System.out.print("ErrorMessage=" + response.getMessage() + "\n");
  66. }
  67. }
  68. /**
  69. * 网络流上传接口
  70. * @param accessKeyId
  71. * @param accessKeySecret
  72. * @param title
  73. * @param fileName
  74. * @param url
  75. */
  76. private static void testUploadURLStream(String accessKeyId, String accessKeySecret, String title, String fileName, String url) {
  77. UploadURLStreamRequest request = new UploadURLStreamRequest(accessKeyId, accessKeySecret, title, fileName, url);
  78. /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/
  79. //request.setIsShowWaterMark(true);
  80. /* 设置上传完成后的回调URL(可选),建议通过点播控制台配置消息监听事件,参见文档 https://help.aliyun.com/document_detail/57029.html */
  81. //request.setCallback("http://callback.sample.com");
  82. /* 视频分类ID(可选) */
  83. //request.setCateId(0);
  84. /* 视频标签,多个用逗号分隔(可选) */
  85. //request.setTags("标签1,标签2");
  86. /* 视频描述(可选) */
  87. //request.setDescription("视频描述");
  88. /* 封面图片(可选) */
  89. //request.setCoverURL("http://cover.sample.com/sample.jpg");
  90. /* 模板组ID(可选) */
  91. //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d");
  92. /* 存储区域(可选) */
  93. //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
  94. UploadVideoImpl uploader = new UploadVideoImpl();
  95. UploadURLStreamResponse response = uploader.uploadURLStream(request);
  96. System.out.print("RequestId=" + response.getRequestId() + "\n"); //请求视频点播服务的请求ID
  97. if (response.isSuccess()) {
  98. System.out.print("VideoId=" + response.getVideoId() + "\n");
  99. } else {
  100. /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */
  101. System.out.print("VideoId=" + response.getVideoId() + "\n");
  102. System.out.print("ErrorCode=" + response.getCode() + "\n");
  103. System.out.print("ErrorMessage=" + response.getMessage() + "\n");
  104. }
  105. }
  106. /**
  107. * 文件流上传接口
  108. * @param accessKeyId
  109. * @param accessKeySecret
  110. * @param title
  111. * @param fileName
  112. */
  113. private static void testUploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) {
  114. UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);
  115. /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/
  116. //request.setShowWaterMark(true);
  117. /* 设置上传完成后的回调URL(可选),建议通过点播控制台配置消息监听事件,参见文档 https://help.aliyun.com/document_detail/57029.html */
  118. //request.setCallback("http://callback.sample.com");
  119. /* 视频分类ID(可选) */
  120. //request.setCateId(0);
  121. /* 视频标签,多个用逗号分隔(可选) */
  122. //request.setTags("标签1,标签2");
  123. /* 视频描述(可选) */
  124. //request.setDescription("视频描述");
  125. /* 封面图片(可选) */
  126. //request.setCoverURL("http://cover.sample.com/sample.jpg");
  127. /* 模板组ID(可选) */
  128. //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d");
  129. /* 存储区域(可选) */
  130. //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com");
  131. UploadVideoImpl uploader = new UploadVideoImpl();
  132. UploadFileStreamResponse response = uploader.uploadFileStream(request);
  133. System.out.print("RequestId=" + response.getRequestId() + "\n"); //请求视频点播服务的请求ID
  134. if (response.isSuccess()) {
  135. System.out.print("VideoId=" + response.getVideoId() + "\n");
  136. } else {
  137. /* 如果设置回调URL无效,不影响视频上传,可以返回VideoId同时会返回错误码。其他情况上传失败时,VideoId为空,此时需要根据返回错误码分析具体错误原因 */
  138. System.out.print("VideoId=" + response.getVideoId() + "\n");
  139. System.out.print("ErrorCode=" + response.getCode() + "\n");
  140. System.out.print("ErrorMessage=" + response.getMessage() + "\n");
  141. }
  142. }
  143. }
本文导读目录