From 0f2f764bd98577cb9ec6c5661f1570c61510061c Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Mon, 26 Apr 2021 18:21:23 +0800 Subject: [PATCH] fix aliyunvedio --- mallinkVideo/pom.xml | 9 +- .../java/com/iformall/video/VideoExcutor.java | 8 +- .../video/aliyun/AliyunVedioUploadHelper.java | 705 ++++++++++++++++++ .../video/aliyun/AliyunVideoExcutor.java | 12 +- .../aliyun/PutObjectProgressListener.java | 120 +++ .../video/aliyun/RefreshSTSTokenImpl.java | 21 + .../aliyun/config/AliyunVideoConfig.java | 41 +- .../lib/aliyun-java-vod-upload-1.4.14.jar | Bin 0 -> 118614 bytes 8 files changed, 869 insertions(+), 47 deletions(-) create mode 100644 mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVedioUploadHelper.java create mode 100644 mallinkVideo/src/main/java/com/iformall/video/aliyun/PutObjectProgressListener.java create mode 100644 mallinkVideo/src/main/java/com/iformall/video/aliyun/RefreshSTSTokenImpl.java create mode 100644 mallinkVideo/src/main/resources/lib/aliyun-java-vod-upload-1.4.14.jar diff --git a/mallinkVideo/pom.xml b/mallinkVideo/pom.xml index ea55c892e..2bf9feeee 100644 --- a/mallinkVideo/pom.xml +++ b/mallinkVideo/pom.xml @@ -22,11 +22,18 @@ aliyun-sdk-oss 3.10.2 - + com.aliyun aliyun-java-sdk-vod 2.15.11 + + com.aliyun + aliyun-java-vod-upload + 1.4.14 + system + ${basedir}/src/main/resources/lib/aliyun-java-vod-upload-1.4.14.jar + com.alibaba fastjson diff --git a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java index ccbbcb887..413db34b1 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/VideoExcutor.java @@ -8,10 +8,12 @@ public interface VideoExcutor { /** * 上传视频 + * title:视频标题 */ - public VideUploadResult uploadLocalVideo(String localFile); + public VideUploadResult uploadLocalVideo(String title,String localFile); - public VideUploadResult uploadLocalVideo(File localFile); + public VideUploadResult uploadLocalVideo(String title,File localFile); - public VideUploadResult uploadNetVideo(String url); + //ext,后缀名 + public VideUploadResult uploadNetVideo(String title,String url,String ext); } diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVedioUploadHelper.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVedioUploadHelper.java new file mode 100644 index 000000000..3e3b0d1fe --- /dev/null +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVedioUploadHelper.java @@ -0,0 +1,705 @@ +package com.iformall.video.aliyun; + +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; + +import com.aliyun.vod.upload.impl.UploadAttachedMediaImpl; +import com.aliyun.vod.upload.impl.UploadImageImpl; +import com.aliyun.vod.upload.impl.UploadM3u8FileImpl; +import com.aliyun.vod.upload.impl.UploadVideoImpl; +import com.aliyun.vod.upload.req.UploadAttachedMediaRequest; +import com.aliyun.vod.upload.req.UploadFileStreamRequest; +import com.aliyun.vod.upload.req.UploadImageRequest; +import com.aliyun.vod.upload.req.UploadLocalM3u8Request; +import com.aliyun.vod.upload.req.UploadStreamRequest; +import com.aliyun.vod.upload.req.UploadURLStreamRequest; +import com.aliyun.vod.upload.req.UploadVideoRequest; +import com.aliyun.vod.upload.req.UploadWebM3u8Request; +import com.aliyun.vod.upload.resp.UploadAttachedMediaResponse; +import com.aliyun.vod.upload.resp.UploadFileStreamResponse; +import com.aliyun.vod.upload.resp.UploadImageResponse; +import com.aliyun.vod.upload.resp.UploadLocalM3u8Response; +import com.aliyun.vod.upload.resp.UploadStreamResponse; +import com.aliyun.vod.upload.resp.UploadURLStreamResponse; +import com.aliyun.vod.upload.resp.UploadVideoResponse; +import com.aliyun.vod.upload.resp.UploadWebM3u8Response; + +/** + * 以下Java示例代码演示了如何在服务端上传媒资文件至视频点播,媒资类型支持音频、视频和图片。 + *

+ * 一、音视频上传目前支持4种方式上传: + * + * 1.上传本地文件,使用分片上传,并支持断点续传,参见testUploadVideo函数。 + * 1.1 当断点续传关闭时,最大支持上传任务执行时间为3000秒,具体可上传文件大小与您的网络带宽及磁盘读写能力有关。 + * 1.2 当断点续传开启时,最大支持48.8TB的单个文件,注意,断点续传开启后,上传任务执行过程中,同时会将当前上传位置写入本地磁盘文件,影响您上传文件的速度,请您根据文件大小选择是否开启 + * + * 2.上传网络流,可指定文件URL进行上传,支持断点续传,最大支持48.8TB的单个文件。 + * 该上传方式需要先将网络文件下载到本地磁盘,再进行上传,所以要保证本地磁盘有充足的空间。参见testUploadURLStream函数。 + * + * 3.上传文件流,可指定本地文件进行上传,不支持断点续传,最大支持5GB的单个文件。参见testUploadFileStream函数。 + * + * 4.流式上传,可指定输入流进行上传,支持文件流和网络流等,不支持断点续传,最大支持5GB的单个文件。参见testUploadStream函数。 + *

+ * + * 二、图片上传目前支持2种方式上传: + * 1.上传本地文件,不支持断点续传,最大支持5GB的单个文件,参见testUploadImageLocalFile函数 + * 2.上传文件流和网络流,InputStream参数必选,不支持断点续传,最大支持5GB的单个文件。参见testUploadImageStream函数。 + * 注:图片上传完成后,会返回图片ID和图片地址,也可通过GetImageInfo查询图片信息,参见接口文档 https://help.aliyun.com/document_detail/89742.html + *

+ * + * 三、m3u8文件上传目前支持2种方式: + * 1.上传本地m3u8音视频文件(包括所有分片文件)到点播,需指定本地m3u8索引文件地址和所有分片地址。 + * 2.上传网络m3u8音视频文件(包括所有分片文件)到点播,需指定m3u8索引文件和分片文件的URL地址。 + * + * 注: + * 1) 上传网络m3u8音视频文件时需要保证地址可访问,如果有权限限制,请设置带签名信息的地址,且保证足够长的有效期,防止地址无法访问导致上传失败 + * 2) m3u8文件上传暂不支持进度回调 + *

+ * + * 四、上传进度回调通知: + * 1.默认上传进度回调函数:视频点播上传SDK内部默认开启上传进度回调函数,输出不同事件通知的日志,您可以设置关闭该上传进度通知及日志输出; + * 2.自定义上传进度回调函数:您可根据自已的业务场景重新定义不同事件处理的方式,只需要修改上传回调示例函数即可。 + *

+ * + * 五、辅助媒资上传目前支持2种方式: + * 1.上传本地文件,不支持断点续传,最大支持5GB的单个文件,参见testUploadAttachedMediaLocalFile函数 + * 2.上传文件流和网络流,InputStream参数必选,不支持断点续传,最大支持5GB的单个文件。参见testUploadAttachedMediaStream函数。 + *

+ * + * 六、支持STS方式上传: + * 1.您需要实现VoDRefreshSTSTokenListener接口的onRefreshSTSToken方法,用于生成STS信息, + * 当文件上传时间超过STS过期时间时,SDK内部会定期调用此方法刷新您的STS信息进行后续文件的上传。 + *

+ * + * 七、可指定上传脚本部署的ECS区域(设置Request的EcsRegionId参数,取值参考存储区域标识:https://help.aliyun.com/document_detail/98194.html), + * 如果与点播存储(OSS)区域相同,则自动使用内网上传文件至存储,上传更快且更省公网流量 + * 由于点播API只提供外网域名访问,因此部署上传脚本的ECS服务器必须具有访问外网的权限。 + * + * 注意: + * 请替换示例中的必选参数,示例中的可选参数如果您不需要设置,请将其删除,以免设置无效参数值与您的预期不符。 + */ +public class AliyunVedioUploadHelper { + + + public static void main(String[] args) { + + //账号AK信息请填写(必选) + String accessKeyId = ""; + //账号AK信息请填写(必选) + String accessKeySecret = ""; + + // 一、视频文件上传 + // 视频标题(必选) + String title = "测试标题"; + // 1.本地文件上传和文件流上传时,文件名称为上传文件绝对路径,如:/User/sample/文件名称.mp4 (必选) + // 2.网络流上传时,文件名称为源文件名,如文件名称.mp4(必选)。 + // 3.流式上传时,文件名称为源文件名,如文件名称.mp4(必选)。 + // 任何上传方式文件名必须包含扩展名 + String fileName = "/Users/test/video/test.mp4"; + // 本地文件上传 + uploadVideo(accessKeyId, accessKeySecret, title, fileName); + + // 待上传视频的网络流地址 + String url = "http://test.aliyun.com/video/test.mp4"; + + // 2.网络流上传 + // 文件扩展名,当url中不包含扩展名时,需要设置该参数 + String fileExtension = "mp4"; + uploadURLStream(accessKeyId, accessKeySecret, title, url, fileExtension); + + // 3.文件流上传 + // testUploadFileStream(accessKeyId, accessKeySecret, title, fileName); + + // 4.流式上传,如文件流和网络流 + InputStream inputStream = null; + // 4.1 文件流 + try { + inputStream = new FileInputStream(fileName); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + // 4.2 网络流 + try { + inputStream = new URL(url).openStream(); + } catch (IOException e) { + e.printStackTrace(); + } + uploadStream(accessKeyId, accessKeySecret, title, fileName, inputStream); + + // 二、图片上传 + + // 1.图片上传-本地文件上传 + // testUploadImageLocalFile(accessKeyId, accessKeySecret); + + // 2.图片上传-流式上传(文件流和网络流) + // testUploadImageStream(accessKeyId, accessKeySecret); + + // 三、m3u8文件上传 + + // 1.上传本地m3u8音视频文件 + uploadLocalM3u8(accessKeyId, accessKeySecret); + // 2.上传网络m3u8音视频文件 + uploadWebM3u8(accessKeyId, accessKeySecret); + // 四、辅助媒资上传 + // 辅助媒资-本地文件上传 +// testUploadAttachedMediaLocalFile(accessKeyId, accessKeySecret); + // 辅助媒资-流式上传(文件流和网络流) +// testUploadAttachedMediaStream(accessKeyId, accessKeySecret); + } + + /** + * 本地文件上传接口 + * + * @param accessKeyId + * @param accessKeySecret + * @param title + * @param fileName + */ + private static void uploadVideo(String accessKeyId, String accessKeySecret, String title, String fileName) { + UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName); + /* 可指定分片上传时每个分片的大小,默认为2M字节 */ + request.setPartSize(2 * 1024 * 1024L); + /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/ + request.setTaskNum(1); + /* 是否开启断点续传, 默认断点续传功能关闭。当网络不稳定或者程序崩溃时,再次发起相同上传请求,可以继续未完成的上传任务,适用于超时3000秒仍不能上传完成的大文件。 + 注意: 断点续传开启后,会在上传过程中将上传位置写入本地磁盘文件,影响文件上传速度,请您根据实际情况选择是否开启*/ + //request.setEnableCheckpoint(false); + /* OSS慢请求日志打印超时时间,是指每个分片上传时间超过该阈值时会打印debug日志,如果想屏蔽此日志,请调整该阈值。单位: 毫秒,默认为300000毫秒*/ + //request.setSlowRequestsThreshold(300000L); + /* 可指定每个分片慢请求时打印日志的时间阈值,默认为300s*/ + //request.setSlowRequestsThreshold(300000L); + /* 是否显示水印(可选),指定模板组ID时,根据模板组配置确定是否显示水印*/ + //request.setIsShowWaterMark(true); + /* 自定义消息回调设置(可选),参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */ + // request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}"); + /* 视频分类ID(可选) */ + //request.setCateId(0); + /* 视频标签,多个用逗号分隔(可选) */ + //request.setTags("标签1,标签2"); + /* 视频描述(可选) */ + //request.setDescription("视频描述"); + /* 封面图片(可选) */ + //request.setCoverURL("http://cover.sample.com/sample.jpg"); + /* 模板组ID(可选) */ + //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); + /* 工作流ID(可选) */ + //request.setWorkflowId("d4430d07361f0*be1339577859b0177b"); + /* 存储区域(可选) */ + //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); + /* 开启默认上传进度回调 */ + //request.setPrintProgress(false); + /* 设置自定义上传进度回调 (必须继承 VoDProgressListener) */ + //request.setProgressListener(new PutObjectProgressListener()); + /* 设置您实现的生成STS信息的接口实现类*/ + // request.setVoDRefreshSTSTokenListener(new RefreshSTSTokenImpl()); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + /* 点播服务接入点 */ + //request.setApiRegionId("cn-shanghai"); + /* ECS部署区域*/ + // request.setEcsRegionId("cn-shanghai"); + 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"); + } + } + + /** + * URL网络流上传。支持断点续传,最大支持48.8TB的单个文件。 + * 该上传方式需要先将网络文件下载到本地磁盘,再进行上传,所以要保证本地磁盘有充足的空间。 + * 当您设置的URL中不包括文件扩展名时,需要单独设置fileExtension,表示文件扩展名。 + * @param accessKeyId + * @param accessKeySecret + * @param title + * @param fileName + * @param url + */ + private static void uploadURLStream(String accessKeyId, String accessKeySecret, String title, String url, String fileExtension) { + UploadURLStreamRequest request = new UploadURLStreamRequest(accessKeyId, accessKeySecret, title, url); + + /* 文件扩展名*/ + request.setFileExtension(fileExtension); + /* 网络文件下载连接超时,单位毫秒,0-表示不限制*/ + request.setDownloadConnectTimeout(1000); + /* 网络文件下载读取超时,单位毫秒,0-表示不限制*/ + request.setDownloadReadTimeout(0); + /* 网络文件下载后保存的本地目录*/ + request.setLocalDownloadFilePath("/Users/download"); + /* 是否显示水印(可选),指定模板组ID时,根据模板组配置确定是否显示水印*/ + //request.setShowWaterMark(true); + /* 自定义消息回调设置(可选),参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */ + // request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}"); + /* 视频分类ID(可选) */ + //request.setCateId(0); + /* 视频标签,多个用逗号分隔(可选) */ + //request.setTags("标签1,标签2"); + /* 视频描述(可选) */ + //request.setDescription("视频描述"); + /* 封面图片(可选) */ + //request.setCoverURL("http://cover.sample.com/sample.jpg"); + /* 模板组ID(可选) */ + //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); + /* 工作流ID(可选) */ + //request.setWorkflowId("d4430d07361f0*be1339577859b0177b"); + /* 存储区域(可选) */ + //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); + /* 开启默认上传进度回调 */ + //request.setPrintProgress(true); + /* 设置自定义上传进度回调 (必须继承 VoDProgressListener) */ + //request.setProgressListener(new PutObjectProgressListener()); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + /* 点播服务接入点 */ + //request.setApiRegionId("cn-shanghai"); + /* ECS部署区域*/ + // request.setEcsRegionId("cn-shanghai"); + UploadVideoImpl uploader = new UploadVideoImpl(); + UploadURLStreamResponse response = uploader.uploadURLStream(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"); + } + } + + /** + * 文件流上传接口 + * + * @param accessKeyId + * @param accessKeySecret + * @param title + * @param fileName + */ + private static void uploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) { + UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName); + /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/ + //request.setShowWaterMark(true); + /* 自定义消息回调设置,参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */ + //request.setUserData(""{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}""); + /* 视频分类ID(可选) */ + //request.setCateId(0); + /* 视频标签,多个用逗号分隔(可选) */ + //request.setTags("标签1,标签2"); + /* 视频描述(可选) */ + //request.setDescription("视频描述"); + /* 封面图片(可选) */ + //request.setCoverURL("http://cover.sample.com/sample.jpg"); + /* 模板组ID(可选) */ + //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); + /* 工作流ID(可选) */ + //request.setWorkflowId("d4430d07361f0*be1339577859b0177b"); + /* 存储区域(可选) */ + //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); + /* 开启默认上传进度回调 */ + //request.setPrintProgress(true); + /* 设置自定义上传进度回调 (必须继承 VoDProgressListener) */ + //request.setProgressListener(new PutObjectProgressListener()); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + /* 点播服务接入点 */ + //request.setApiRegionId("cn-shanghai"); + /* ECS部署区域*/ + // request.setEcsRegionId("cn-shanghai"); + UploadVideoImpl uploader = new UploadVideoImpl(); + UploadFileStreamResponse response = uploader.uploadFileStream(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"); + } + } + + /** + * 流式上传接口 + * + * @param accessKeyId + * @param accessKeySecret + * @param title + * @param fileName + * @param inputStream + */ + private static void uploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) { + UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream); + /* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*/ + //request.setShowWaterMark(true); + /* 自定义消息回调设置,参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */ + //request.setUserData(""{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}""); + /* 视频分类ID(可选) */ + //request.setCateId(0); + /* 视频标签,多个用逗号分隔(可选) */ + //request.setTags("标签1,标签2"); + /* 视频描述(可选) */ + //request.setDescription("视频描述"); + /* 封面图片(可选) */ + //request.setCoverURL("http://cover.sample.com/sample.jpg"); + /* 模板组ID(可选) */ + //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); + /* 工作流ID(可选) */ + //request.setWorkflowId("d4430d07361f0*be1339577859b0177b"); + /* 存储区域(可选) */ + //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); + /* 开启默认上传进度回调 */ + // request.setPrintProgress(true); + /* 设置自定义上传进度回调 (必须继承 VoDProgressListener) */ + // request.setProgressListener(new PutObjectProgressListener()); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + /* 点播服务接入点 */ + //request.setApiRegionId("cn-shanghai"); + /* ECS部署区域*/ + // request.setEcsRegionId("cn-shanghai"); + UploadVideoImpl uploader = new UploadVideoImpl(); + UploadStreamResponse response = uploader.uploadStream(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"); + } + } + + /** + * 图片上传接口,本地文件上传示例 + * 参数参考文档 https://help.aliyun.com/document_detail/55619.html + * + * @param accessKeyId + * @param accessKeySecret + */ + private static void uploadImageLocalFile(String accessKeyId, String accessKeySecret) { + /* 图片类型(必选)取值范围:default(默认),cover(封面),watermark(水印)*/ + String imageType = "cover"; + UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType); + request.setImageType("cover"); + /* 图片文件扩展名(可选)取值范围:png,jpg,jpeg */ + //request.setImageExt("png"); + /* 图片标题(可选)长度不超过128个字节,UTF8编码 */ + //request.setTitle("图片标题"); + /* 图片标签(可选)单个标签不超过32字节,最多不超过16个标签,多个用逗号分隔,UTF8编码 */ + //request.setTags("标签1,标签2"); + /* 存储区域(可选)*/ + //request.setStorageLocation("out-4f3952f78c0211e8b3020013e7.oss-cn-shanghai.aliyuncs.com"); + /* 流式上传时,InputStream为必选,fileName为源文件名称,如:文件名称.png(可选)*/ + String fileName = "/Users/demo/png/test.png"; + request.setFileName(fileName); + /* 开启默认上传进度回调 */ + //request.setPrintProgress(false); + /* 设置自定义上传进度回调 (必须继承 VoDProgressListener) */ + // request.setProgressListener(new PutObjectProgressListener()); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + /* 点播服务接入点 */ + //request.setApiRegionId("cn-shanghai"); + UploadImageImpl uploadImage = new UploadImageImpl(); + UploadImageResponse response = uploadImage.upload(request); + System.out.print("RequestId=" + response.getRequestId() + "\n"); + if (response.isSuccess()) { + System.out.print("ImageId=" + response.getImageId() + "\n"); + System.out.print("ImageURL=" + response.getImageURL() + "\n"); + } else { + System.out.print("ErrorCode=" + response.getCode() + "\n"); + System.out.print("ErrorMessage=" + response.getMessage() + "\n"); + } + + } + + /** + * 图片上传接口,流式上传示例(支持文件流和网络流) + * 参数参考文档 https://help.aliyun.com/document_detail/55619.html + * + * @param accessKeyId + * @param accessKeySecret + */ + private static void uploadImageStream(String accessKeyId, String accessKeySecret) { + /* 图片类型(必选)取值范围:default(默认),cover(封面),watermark(水印)*/ + String imageType = "cover"; + UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType); + /* 图片文件扩展名(可选)取值范围:png,jpg,jpeg */ + //request.setImageExt("png"); + /* 图片标题(可选)长度不超过128个字节,UTF8编码 */ + //request.setTitle("图片标题"); + /* 图片标签(可选)单个标签不超过32字节,最多不超过16个标签,多个用逗号分隔,UTF8编码 */ + //request.setTags("标签1,标签2"); + /* 存储区域(可选)*/ + //request.setStorageLocation("out-4f3952f78c0211e8b3020013e7.oss-cn-shanghai.aliyuncs.com"); + /* 流式上传时,InputStream为必选,fileName为源文件名称,如:文件名称.png(可选)*/ + //request.setFileName("测试文件名称.png"); + /* 开启默认上传进度回调 */ + // request.setPrintProgress(true); + /* 设置自定义上传进度回调 (必须继承 VoDProgressListener) */ + // request.setProgressListener(new PutObjectProgressListener()); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + // 1.文件流上传 + // InputStream fileStream = getFileStream(request.getFileName()); + // if (fileStream != null) { + // request.setInputStream(fileStream); + // } + + // 2.网络流上传 + String url = "http://test.aliyun.com/image/default/test.png"; + InputStream urlStream = getUrlStream(url); + if (urlStream != null) { + request.setInputStream(urlStream); + } + + // 开始上传图片 + UploadImageImpl uploadImage = new UploadImageImpl(); + UploadImageResponse response = uploadImage.upload(request); + System.out.print("RequestId=" + response.getRequestId() + "\n"); + if (response.isSuccess()) { + System.out.print("ImageId=" + response.getImageId() + "\n"); + System.out.print("ImageURL=" + response.getImageURL() + "\n"); + } else { + System.out.print("ErrorCode=" + response.getCode() + "\n"); + System.out.print("ErrorMessage=" + response.getMessage() + "\n"); + } + } + + /** + * 上传本地m3u8视频或音频文件到点播,m3u8文件和分片文件默认在同一目录(sliceFilenames为空时,会按照同一目录去解析分片地址) + * + * @param request 本地m3u8上传请求类 + * m3u8Filename: 本地m3u8索引文件的绝对路径,且m3u8文件的分片信息必须是相对路径,不能含有URL或本地绝对路径 + * sliceFilenames: ts分片文件的绝对路径列表,如指定则以此为准,若不指定,则自动解析 m3u8Filename 里的m3u8文件 + */ + private static void uploadLocalM3u8(String accessKeyId, String accessKeySecret) { + String title = "test_upload_local_m3u8"; + String m3u8Filename = "/Users/test/0e9ecfc6da934d1887ed7bdfc925ecf5/cc38da35c7b24de0abe58619cdd7a8-6479a12446b994719838e0307f6458-ld.m3u8"; + UploadLocalM3u8Request request = new UploadLocalM3u8Request(accessKeyId, accessKeySecret, title, m3u8Filename); + String[] sliceFilenames = new String[]{ + "/Users/test/0e9ecfc6da934d1887ed7bdfc925ecf5/slices/cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a84937034742-ld-00001.ts", + "/Users/test/0e9ecfc6da934d1887ed7bdfc925ecf5/slices/cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a84937034742-ld-00002.ts", + "/Users/test/0e9ecfc6da934d1887ed7bdfc925ecf5/slices/cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a84937034742-ld-00003.ts", + "/Users/test/0e9ecfc6da934d1887ed7bdfc925ecf5/slices/cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a84937034742-ld-00004.ts", + "/Users/test/0e9ecfc6da934d1887ed7bdfc925ecf5/slices/cc38da35c7b24de0abe58619cdd7a896-c45797a1ad6e75fbb9d1a84937034742-ld-00005.ts" + }; + // ts分片文件列表,可选,不指定时,直接解析m3u8FileURL获取分片地址 + request.setSliceFilenames(sliceFilenames); + /* 可指定分片上传时每个分片的大小,默认为2M字节 */ + request.setPartSize(2 * 1024 * 1024L); + /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/ + request.setTaskNum(1); + /* 是否显示水印(可选),指定模板组ID时,根据模板组配置确定是否显示水印*/ + //request.getShowWaterMark(true); + /* 自定义消息回调设置(可选),参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */ + // request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}"); + /* 视频分类ID(可选) */ + //request.setCateId(-1L); + /* 视频标签,多个用逗号分隔(可选) */ + //request.setTags("标签1,标签2"); + /* 视频描述(可选) */ + //request.setDescription("视频描述"); + /* 封面图片(可选) */ + //request.setCoverURL("http://cover.sample.com/sample.jpg"); + /* 模板组ID(可选) */ + //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); + /* 工作流ID(可选) */ + //request.setWorkflowId("d4430d07361f0*be1339577859b0177b"); + /* 存储区域(可选) */ + //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); + /* 设置应用ID*/ + // request.setAppId("app-1000000"); + /* 点播服务接入点 */ + // request.setApiRegionId("cn-shanghai"); + /* ECS部署区域*/ + // request.setEcsRegionId("cn-shanghai"); + UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl(); + UploadLocalM3u8Response uploadLocalM3u8Response = uploadM3u8File.uploadLocalM3u8(request); + System.out.println("code = " + uploadLocalM3u8Response.getCode()); + System.out.println("message = " + uploadLocalM3u8Response.getMessage()); + System.out.println("videoId = " + uploadLocalM3u8Response.getVideoId()); + System.out.println("requestId = " + uploadLocalM3u8Response.getRequestId()); + } + + /** + * 上传网络m3u8视频或音频文件到点播,需本地磁盘空间足够,会先下载到本地临时目录,再上传到点播存储 + * + * @param request 网络m3u8上传请求类 + * m3u8FileURL: 网络m3u8索引文件的URL地址,且m3u8文件的分片信息必须是相对地址,不能含有URL或本地绝对路径 + * sliceFileURLs: ts分片文件的URL地址列表;需自行拼接ts分片的URL地址列表 + */ + private static void uploadWebM3u8(String accessKeyId, String accessKeySecret) { + String title = "test_upload_web_m3u8"; + String m3u8FileURL = "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-538087dcf2c201c31ce4324bf76af691-ld.m3u8"; + UploadWebM3u8Request request = new UploadWebM3u8Request(accessKeyId, accessKeySecret, title, m3u8FileURL); + String[] sliceFileURLs = new String[]{ + "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-00001.ts", + "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-00002.ts", + "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-00003.ts", + "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-00004.ts", + "http://test.aliyun.com/f0d644abc547129e957b386f772c72/a0e1e2817ab9425aa558fe67a90e717f-822598b9c170a8c6dad985e20cd9c27d-ld-00005.ts" + }; + // ts分片地址,可选,不指定时,直接解析m3u8FileURL获取分片地址 + request.setSliceFileURLs(sliceFileURLs); + /* 下载文件的临时存储目录,可自定义,如不指定则保存到程序所运行的目录下*/ + // request.setGlobalLocalFilePath("/User/download/"); + /* 可指定分片上传时每个分片的大小,默认为2M字节 */ + request.setPartSize(2 * 1024 * 1024L); + /* 可指定分片上传时的并发线程数,默认为1,(注:该配置会占用服务器CPU资源,需根据服务器情况指定)*/ + request.setTaskNum(1); + /* 是否显示水印(可选),指定模板组ID时,根据模板组配置确定是否显示水印*/ + //request.setShowWaterMark(true); + /* 自定义消息回调设置(可选),参数说明参考文档 https://help.aliyun.com/document_detail/86952.html#UserData */ + //request.setUserData("{\"Extend\":{\"test\":\"www\",\"localId\":\"xxxx\"},\"MessageCallback\":{\"CallbackURL\":\"http://test.test.com\"}}"); + /* 视频分类ID(可选) */ + //request.setCateId(-1L); + /* 视频标签,多个用逗号分隔(可选) */ + //request.setTags("标签1,标签2"); + /* 视频描述(可选) */ + //request.setDescription("视频描述"); + /* 封面图片(可选) */ + //request.setCoverURL("http://cover.sample.com/sample.jpg"); + /* 模板组ID(可选) */ + //request.setTemplateGroupId("8c4792cbc8694e7084fd5330e56a33d"); + /* 工作流ID(可选) */ + //request.setWorkflowId("d4430d07361f0*be1339577859b0177b"); + /* 存储区域(可选) */ + //request.setStorageLocation("in-201703232118266-5sejdln9o.oss-cn-shanghai.aliyuncs.com"); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + /* 点播服务接入点 */ + //request.setApiRegionId("cn-shanghai"); + /* ECS部署区域*/ + // request.setEcsRegionId("cn-shanghai"); + UploadM3u8FileImpl uploadM3u8File = new UploadM3u8FileImpl(); + UploadWebM3u8Response uploadWebM3u8Response = uploadM3u8File.uploadWebM3u8(request); + System.out.println("code = " + uploadWebM3u8Response.getCode()); + System.out.println("message = " + uploadWebM3u8Response.getMessage()); + System.out.println("videoId = " + uploadWebM3u8Response.getVideoId()); + System.out.println("requestId = " + uploadWebM3u8Response.getRequestId()); + } + + /** + * 辅助媒资上传接口,本地文件上传示例 + * 参数参考文档 https://help.aliyun.com/document_detail/98467.html + * + * @param accessKeyId + * @param accessKeySecret + */ + private static void uploadAttachedMediaLocalFile(String accessKeyId, String accessKeySecret) { + /* 业务类型 */ + String businessType = "watermark"; + /* 文件扩展名 */ + String mediaExt = "png"; + String filename = "/Users/demo/png/test.png"; + UploadAttachedMediaRequest request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt); + request.setFileName(filename); + /* 标题*/ + request.setTitle("test_attached_media"); + /* 分类ID */ + request.setCateId(-1L); + /* 标签,多个用逗号分隔(可选) */ + request.setTags("tag1,tag2"); + /* 描述(可选) */ + request.setDescription("test_desc"); + /* 存储区域(可选) */ + request.setStorageLocation("out-20170323225118266-5l3hs5gqwa.oss-cn-shanghai.aliyuncs.com"); + /* 点播服务接入点 */ + request.setApiRegionId("cn-shanghai"); + /* 设置应用ID*/ + //request.setAppId("app-1000000"); + UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl(); + UploadAttachedMediaResponse response = uploader.upload(request); + System.out.print("RequestId=" + response.getRequestId() + "\n"); + if (response.isSuccess()) { + System.out.print("MediaId=" + response.getMediaId() + "\n"); + System.out.print("MediaURL=" + response.getMediaURL() + "\n"); + System.out.print("FileURL=" + response.getFileURL() + "\n"); + } else { + System.out.print("ErrorCode=" + response.getCode() + "\n"); + System.out.print("ErrorMessage=" + response.getMessage() + "\n"); + } + + } + + /** + * 辅助媒资上传接口,流式上传示例(支持文件流和网络流) + * 参数参考文档 https://help.aliyun.com/document_detail/98467.html + * + * @param accessKeyId + * @param accessKeySecret + */ + private static void uploadAttachedMediaStream(String accessKeyId, String accessKeySecret) { + /* 业务类型 */ + String businessType = "watermark"; + /* 文件扩展名 */ + String mediaExt = "png"; + String filename = "http://test.aliyun.com/test.png"; + UploadAttachedMediaRequest request; + // 1.文件流上传 + InputStream fileStream = getFileStream(filename); + request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt); + request.setInputStream(fileStream); + + // 2.网络流上传 +// String url = "http://test.aliyun.com/image//test.png"; +// InputStream urlStream = getUrlStream(url); +// request = new UploadAttachedMediaRequest(accessKeyId, accessKeySecret, businessType, mediaExt); +// request.setInputStream(urlStream); + + /* 标题*/ + request.setTitle("test_attached_media"); + /* 分类ID */ + request.setCateId(-1L); + /* 标签,多个用逗号分隔(可选) */ + request.setTags("tag1,tag2"); + /* 描述(可选) */ + request.setDescription("test_desc"); + /* 存储区域(可选) */ + request.setStorageLocation("out-20170323225118266-5l3****wa.oss-cn-shanghai.aliyuncs.com"); + /* 点播服务接入点 */ + request.setApiRegionId("cn-shanghai"); + /* 设置应用ID*/ + // request.setAppId("app-1000000"); + // 开始上传 + UploadAttachedMediaImpl uploader = new UploadAttachedMediaImpl(); + UploadAttachedMediaResponse response = uploader.upload(request); + System.out.print("RequestId=" + response.getRequestId() + "\n"); + if (response.isSuccess()) { + System.out.print("MediaId=" + response.getMediaId() + "\n"); + System.out.print("MediaURL=" + response.getMediaURL() + "\n"); + System.out.print("FileURL=" + response.getFileURL() + "\n"); + } else { + System.out.print("ErrorCode=" + response.getCode() + "\n"); + System.out.print("ErrorMessage=" + response.getMessage() + "\n"); + } + } + + private static InputStream getFileStream(String fileName) { + try { + return new FileInputStream(fileName); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } + return null; + } + + private static InputStream getUrlStream(String url) { + try { + return new URL(url).openStream(); + } catch (IOException e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index a0b650325..c663f2a12 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -2,27 +2,31 @@ package com.iformall.video.aliyun; import java.io.File; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import com.iformall.video.VideoExcutor; +import com.iformall.video.aliyun.config.AliyunVideoConfig; import com.iformall.video.entity.VideUploadResult; @Component public class AliyunVideoExcutor implements VideoExcutor { + @Autowired + AliyunVideoConfig config; + @Override - public VideUploadResult uploadLocalVideo(String localFile) { + public VideUploadResult uploadLocalVideo(String title,String localFile) { return null; } @Override - public VideUploadResult uploadLocalVideo(File localFile) { + public VideUploadResult uploadLocalVideo(String title,File localFile) { return null; } @Override - public VideUploadResult uploadNetVideo(String url) { - // TODO Auto-generated method stub + public VideUploadResult uploadNetVideo(String title,String url,String ext) { return null; } diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/PutObjectProgressListener.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/PutObjectProgressListener.java new file mode 100644 index 000000000..d96e65569 --- /dev/null +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/PutObjectProgressListener.java @@ -0,0 +1,120 @@ +package com.iformall.video.aliyun; + +import com.aliyun.oss.event.ProgressEvent; +import com.aliyun.oss.event.ProgressEventType; +import com.aliyun.vod.upload.impl.VoDProgressListener; + +/** + * 上传进度回调方法类 + * 当您开启上传进度回调时该事件回调才会生效。 + * OSS分片上传成功或失败均触发相应的回调事件,您可根据业务逻辑处理相应的事件回调。 + * 当创建音视频信息成功后,此上传进度回调中的videoId为本次上传生成的视频ID,您可以根据视频ID进行音视频管理。 + * 当创建图片信息成功后,此上传进度回调中的ImageId为本次上传生成的图片ID,您可以根据视频ID进行图片管理。 + */ + +public class PutObjectProgressListener implements VoDProgressListener { + /** + * 已成功上传至OSS的字节数 + */ + private long bytesWritten = 0; + /** + * 原始文件的总字节数 + */ + private long totalBytes = -1; + /** + * 本次上传成功标记 + */ + private boolean succeed = false; + /** + * 视频ID + */ + private String videoId; + /** + * 图片ID + */ + private String imageId; + + public void progressChanged(ProgressEvent progressEvent) { + long bytes = progressEvent.getBytes(); + ProgressEventType eventType = progressEvent.getEventType(); + switch (eventType) { + // 开始上传事件 + case TRANSFER_STARTED_EVENT: + if (videoId != null) { + System.out.println("qqqqStart to upload videoId " + videoId + "......"); + } + if (imageId != null) { + System.out.println("aaaStart to upload imageId " + imageId + "......"); + } + break; + // 计算待上传文件总大小事件通知,只有调用本地文件方式上传时支持该事件 + case REQUEST_CONTENT_LENGTH_EVENT: + this.totalBytes = bytes; + System.out.println(this.totalBytes + "bytes in total will be uploaded to OSS."); + break; + // 已经上传成功文件大小事件通知 + case REQUEST_BYTE_TRANSFER_EVENT: + this.bytesWritten += bytes; + if (this.totalBytes != -1) { + int percent = (int) (this.bytesWritten * 100.0 / this.totalBytes); + System.out.println(bytes + " bytes have been written at this time, upload progress: " + + percent + "%(" + this.bytesWritten + "/" + this.totalBytes + ")"); + } else { + System.out.println(bytes + " bytes have been written at this time, upload sub total : " + + "(" + this.bytesWritten + ")"); + } + break; + // 文件全部上传成功事件通知 + case TRANSFER_COMPLETED_EVENT: + this.succeed = true; + if (videoId != null) { + System.out.println("Succeed to upload videoId " + videoId + " , " + this.bytesWritten + " bytes have been transferred in total."); + } + if (imageId != null) { + System.out.println("Succeed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred in total."); + } + break; + // 文件上传失败事件通知 + case TRANSFER_FAILED_EVENT: + if (videoId != null) { + System.out.println("Failed to upload videoId " + videoId + " , " + this.bytesWritten + " bytes have been transferred."); + } + if (imageId != null) { + System.out.println("Failed to upload imageId " + imageId + " , " + this.bytesWritten + " bytes have been transferred."); + } + break; + + default: + break; + } + } + + public boolean isSucceed() { + return succeed; + } + + public void onVidReady(String videoId) { + setVideoId(videoId); + } + + public void onImageIdReady(String imageId) { + setImageId(imageId); + } + + public String getVideoId() { + return videoId; + } + + public void setVideoId(String videoId) { + this.videoId = videoId; + } + + public String getImageId() { + return imageId; + } + + public void setImageId(String imageId) { + this.imageId = imageId; + } +} + diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/RefreshSTSTokenImpl.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/RefreshSTSTokenImpl.java new file mode 100644 index 000000000..8ecb1c070 --- /dev/null +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/RefreshSTSTokenImpl.java @@ -0,0 +1,21 @@ +package com.iformall.video.aliyun; + +import com.aliyun.vod.upload.dto.STSTokenDTO; +import com.aliyun.vod.upload.impl.VoDRefreshSTSTokenListener; + +/** + * @author vod + * 生成STS信息实现类 + * @date 2019/6/5 + */ +public class RefreshSTSTokenImpl implements VoDRefreshSTSTokenListener { + + public STSTokenDTO onRefreshSTSToken() { + STSTokenDTO stsTokenDTO = new STSTokenDTO(); + stsTokenDTO.setAccessKeyId(""); + stsTokenDTO.setAccessKeySecret(""); + stsTokenDTO.setSecurityToken(""); + return stsTokenDTO; + } + +} diff --git a/mallinkVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java b/mallinkVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java index 87c1ea1a2..1b8e832d9 100644 --- a/mallinkVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java +++ b/mallinkVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java @@ -9,43 +9,6 @@ import lombok.Data; @Configuration @ConfigurationProperties(prefix = "video.aliyun") public class AliyunVideoConfig { - private String access; - - private String secret; - - private String clientRegion; - - private String bucketName; - - public String getAccess() { - return access; - } - - public void setAccess(String access) { - this.access = access; - } - - public String getSecret() { - return secret; - } - - public void setSecret(String secret) { - this.secret = secret; - } - - public String getClientRegion() { - return clientRegion; - } - - public void setClientRegion(String clientRegion) { - this.clientRegion = clientRegion; - } - - public String getBucketName() { - return bucketName; - } - - public void setBucketName(String bucketName) { - this.bucketName = bucketName; - } + private String accessKeyId; + private String accessKeySecret; } diff --git a/mallinkVideo/src/main/resources/lib/aliyun-java-vod-upload-1.4.14.jar b/mallinkVideo/src/main/resources/lib/aliyun-java-vod-upload-1.4.14.jar new file mode 100644 index 0000000000000000000000000000000000000000..571f9474facfe9a57b878f5098c0d3ba378e89ad GIT binary patch literal 118614 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 literal 0 HcmV?d00001