一,开通阿里云视频点播

1,打开阿里云搜索“视频点播”

2,开通服务

查看两种付费方式的区别(了解其他付费项目):

https://www.aliyun.com/price/product?spm=5176.12672711.overview.8.b6e04943RtJBQc#/vod/detail

3,开通成功进入点播控制台

点击“音/视频”上传一个视频测试

更多详细查看官方快速入门:

https://help.aliyun.com/document_detail/51512.html?spm=a2c4g.11186623.6.556.17827bdco3rJaj

二,java实现视频上传

进入阿里云查看点播文档:https://help.aliyun.com/document_detail/53406.html?spm=a2c4g.11186623.6.1067.113b3a1a91f01x

1,安装SDK

由于阿里云上说,aliyun-java-vod-upload-1.4.12.jar 还未正式开源,请您直接引入jar包至您的项目中使用。 所以需要导入aliyun-java-vod-upload-1.4.12.jar

方式1:直接安装阿里云上的方式

方式2:使用maven命令把jar加入maven仓库中

命令:

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

成功:

成功后引入:

<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-sdk-vod-upload</artifactId><version>1.4.12</version>
</dependency>
   <dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.1</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.10</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>

 2,测试:

说明:在官网文档中下载中,会有各种上传方式的代码

如:本地文件上传,网络流上传,文件流上传等等

我这里演示本地视频文件上传:

public class UploadVideoDemo {//账号AK信息请填写(必选)private static final String accessKeyId = "<Your accessKeyId>";//账号AK信息请填写(必选)private static final String accessKeySecret = "<Your accessKeySecret>";public static void main(String[] args) {// 一、视频文件上传// 视频标题(必选)String title = "测试标题";// 1.本地文件上传和文件流上传时,文件名称为上传文件绝对路径,如:/User/sample/文件名称.mp4 (必选)// 2.网络流上传时,文件名称为源文件名,如文件名称.mp4(必选)。// 3.流式上传时,文件名称为源文件名,如文件名称.mp4(必选)。// 任何上传方式文件名必须包含扩展名String fileName = "D:/s2.mp4";// 本地文件上传testUploadVideo(accessKeyId, accessKeySecret, title, fileName);}/*** 本地文件上传接口** @param accessKeyId* @param accessKeySecret* @param title* @param fileName*/private static void testUploadVideo(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);/* 设置上传完成后的回调URL(可选),建议您通过点播控制台配置事件通知,参见文档 https://help.aliyun.com/document_detail/55627.html *///request.setCallback("http://callback.sample.com");/* 自定义消息回调设置(可选),参数说明参考文档 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");  //请求视频点播服务的请求IDif (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");}}}

运行,查看结果:

三,java实现音视频播放功能

0,初始化(使用账号AccessKey初始化)

import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.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;
}

1,获取视频播放地址

import com.aliyuncs.vod.model.v20170321.GetPlayInfoRequest;
import com.aliyuncs.vod.model.v20170321.GetPlayInfoResponse;
/*获取播放地址函数*/
public static GetPlayInfoResponse getPlayInfo(DefaultAcsClient client) throws Exception {GetPlayInfoRequest request = new GetPlayInfoRequest();request.setVideoId("视频ID");return client.getAcsResponse(request);
}
/*以下为调用示例*/
public static void main(String[] argv) {DefaultAcsClient client = initVodClient("<您的AccessKeyId>", "<您的AccessKeySecret>");GetPlayInfoResponse response = new GetPlayInfoResponse();try {response = getPlayInfo(client);List<GetPlayInfoResponse.PlayInfo> 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");} catch (Exception e) {System.out.print("ErrorMessage = " + e.getLocalizedMessage());}System.out.print("RequestId = " + response.getRequestId() + "\n");
}

request.setVideoId("视频ID");中的视频ID,为

因为上传视频可以进行加密,加密之后使用机密之后地址不能进行视频播放,所以数据库一般不进行视频的地址存储,而是存储视频ID。

测试获取视频播放地址:

2,获取视频播放凭证

import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthRequest;
import com.aliyuncs.vod.model.v20170321.GetVideoPlayAuthResponse;
/*获取播放凭证函数*/
public static GetVideoPlayAuthResponse getVideoPlayAuth(DefaultAcsClient client) throws Exception {GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();request.setVideoId("视频ID");return client.getAcsResponse(request);
}
/*以下为调用示例*/
public static void main(String[] argv) {DefaultAcsClient client = initVodClient("<您的AccessKeyId>", "<您的AccessKeySecret>");GetVideoPlayAuthResponse response = new GetVideoPlayAuthResponse();try {response = getVideoPlayAuth(client);//播放凭证System.out.print("PlayAuth = " + response.getPlayAuth() + "\n");//VideoMeta信息System.out.print("VideoMeta.Title = " + response.getVideoMeta().getTitle() + "\n");} catch (Exception e) {System.out.print("ErrorMessage = " + e.getLocalizedMessage());}System.out.print("RequestId = " + response.getRequestId() + "\n");
}

a,如果你的视频没有加密那就不会获取到视频凭证的:

ErrorMessage = InvalidVideo.NotFound : The video does not exist.

b,如果忘记没填写accessKeyId和accessKeySecret:

ErrorMessage = InvalidAccessKeyId : Specified access key is not found or invalid.

c,如果在阿里云视频点播控制台操作视频加密

必须选中hls

开启hls加密

实现

加密后就不能再根据地址去播放视频了。

四,页面播放视频

视频页面的播放有可以使用地址播放 和 凭证(加密) 播放。

1,地址播放 html

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><meta http-equiv="x-ua-compatible" content="IE=edge" ><meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no"/><title>Aliplayer Functions</title><!-- 阿里云视频播放器样式 --><link rel="stylesheet" href="https://g.alicdn.com/de/prismplayer/2.8.8/skins/default/aliplayer-min.css" /><!-- 阿里云视频播放器脚本 --><script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/de/prismplayer/2.8.8/aliplayer-min.js"></script>
</head>
<body>
<div id="player-con"></div>
<script>var player = new Aliplayer({id: "player-con",//播放方式1:--------------------------------------------------------------------------// source: "//player.alicdn.com/video/editor.mp4",//播放地址,播放方式1.//播放方式1:--------------------------------------------------------------------------width: "100%",//播放器的宽度height: "500px",//播放器的高度cover: 'https://img.alicdn.com/tps/TB1EXIhOFXXXXcIaXXXXXXXXXXX-760-340.jpg',// 进入视频时的封面/* To set an album art, you must set 'autoplay' and 'preload' to 'false' */autoplay: false,//是否自动播放preload: false,//播放器自动加载,目前仅h5可用。isLive: false// 直播//更多属性设置查看:https://help.aliyun.com/document_detail/125572.html?spm=a2c4g.11186623.2.25.131d1c4c8UlYCQ}, function (player) {console.log("The player is created");});
</script>

2,凭证(加密) 播放 html

<script>var player = new Aliplayer({id: "player-con",//播放方式2:--------------------------------------------------------------------------encryptType:'1',//如果播放加密视频,则需设置encryptType=1,非加密视频无需设置此项vid : 'da2112417b5abe93',//视频id playauth : '视频凭证,代码生成。',//播放方式2:--------------------------------------------------------------------------width: "100%",//播放器的宽度height: "500px",//播放器的高度cover: 'https://img.alicdn.com/tps/TB1EXIhOFXXXXcIaXXXXXXXXXXX-760-340.jpg',// 封面/* To set an album art, you must set 'autoplay' and 'preload' to 'false' */autoplay: false,//是否自动播放preload: false,//播放器自动加载,目前仅h5可用。isLive: false// 直播//更多属性设置查看:https://help.aliyun.com/document_detail/125572.html?spm=a2c4g.11186623.2.25.131d1c4c8UlYCQ}, function (player) {console.log("The player is created");});</script>

注意点:如果出现播放不了的情况,如“网络错误加载数据失败(fragLoadError)”,可以看下阿里云上的权限是否设为了私有的,把私有改为公有的试下。

更多视频配置,如

请查看阿里云:

https://player.alicdn.com/aliplayer/presentation/index.html?type=cover

五,删除阿里云上传的视频(物理删除)

import com.aliyuncs.vod.model.v20170321.DeleteVideoRequest;
import com.aliyuncs.vod.model.v20170321.DeleteVideoResponse;
/*** 删除视频* @param client 发送请求客户端* @return DeleteVideoResponse 删除视频响应数据* @throws Exception
*/
public static DeleteVideoResponse deleteVideo(DefaultAcsClient client) throws Exception {DeleteVideoRequest request = new DeleteVideoRequest();//支持传入多个视频ID,多个用逗号分隔request.setVideoIds("VideoId1,VideoId2");return client.getAcsResponse(request);
}
/*请求示例*/
public static void main(String[] argv) {DefaultAcsClient client = initVodClient("<Your AccessKeyId>", "<Your AccessKeySecret>");DeleteVideoResponse response = new DeleteVideoResponse();try {response = deleteVideo(client);} catch (Exception e) {System.out.print("ErrorMessage = " + e.getLocalizedMessage());}System.out.print("RequestId = " + response.getRequestId() + "\n");
}

application.xml可配置:

# 最大上传单个文件大小:默认1M
spring.servlet.multipart.max-file-size=1024MB
# 最大置总上传的数据大小 :默认10M
spring.servlet.multipart.max-request-size=1024MB
import com.alibaba.fastjson.JSONObject;
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.*;
import com.aliyun.vod.upload.resp.*;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;/*** 以下Java示例代码演示了如何在服务端上传媒资文件至视频点播,媒资类型支持音频、视频和图片。* <p>* 一、音视频上传目前支持4种方式上传:** 1.上传本地文件,使用分片上传,并支持断点续传,参见testUploadVideo函数。* 1.1 当断点续传关闭时,最大支持上传任务执行时间为3000秒,具体可上传文件大小与您的网络带宽及磁盘读写能力有关。* 1.2 当断点续传开启时,最大支持48.8TB的单个文件,注意,断点续传开启后,上传任务执行过程中,同时会将当前上传位置写入本地磁盘文件,影响您上传文件的速度,请您根据文件大小选择是否开启** 2.上传网络流,可指定文件URL进行上传,支持断点续传,最大支持48.8TB的单个文件。*   该上传方式需要先将网络文件下载到本地磁盘,再进行上传,所以要保证本地磁盘有充足的空间。参见testUploadURLStream函数。** 3.上传文件流,可指定本地文件进行上传,不支持断点续传,最大支持5GB的单个文件。参见testUploadFileStream函数。** 4.流式上传,可指定输入流进行上传,支持文件流和网络流等,不支持断点续传,最大支持5GB的单个文件。参见testUploadStream函数。* <p>** 二、图片上传目前支持2种方式上传:* 1.上传本地文件,不支持断点续传,最大支持5GB的单个文件,参见testUploadImageLocalFile函数* 2.上传文件流和网络流,InputStream参数必选,不支持断点续传,最大支持5GB的单个文件。参见testUploadImageStream函数。* 注:图片上传完成后,会返回图片ID和图片地址,也可通过GetImageInfo查询图片信息,参见接口文档 https://help.aliyun.com/document_detail/89742.html* <p>** 三、m3u8文件上传目前支持2种方式:* 1.上传本地m3u8音视频文件(包括所有分片文件)到点播,需指定本地m3u8索引文件地址和所有分片地址。* 2.上传网络m3u8音视频文件(包括所有分片文件)到点播,需指定m3u8索引文件和分片文件的URL地址。** 注:* 1) 上传网络m3u8音视频文件时需要保证地址可访问,如果有权限限制,请设置带签名信息的地址,且保证足够长的有效期,防止地址无法访问导致上传失败* 2) m3u8文件上传暂不支持进度回调* <p>** 四、上传进度回调通知:* 1.默认上传进度回调函数:视频点播上传SDK内部默认开启上传进度回调函数,输出不同事件通知的日志,您可以设置关闭该上传进度通知及日志输出;* 2.自定义上传进度回调函数:您可根据自已的业务场景重新定义不同事件处理的方式,只需要修改上传回调示例函数即可。* <p>** 五、辅助媒资上传目前支持2种方式:* 1.上传本地文件,不支持断点续传,最大支持5GB的单个文件,参见testUploadAttachedMediaLocalFile函数* 2.上传文件流和网络流,InputStream参数必选,不支持断点续传,最大支持5GB的单个文件。参见testUploadAttachedMediaStream函数。* <p>** 六、支持STS方式上传:* 1.您需要实现VoDRefreshSTSTokenListener接口的onRefreshSTSToken方法,用于生成STS信息,* 当文件上传时间超过STS过期时间时,SDK内部会定期调用此方法刷新您的STS信息进行后续文件的上传。* <p>** 七、可指定上传脚本部署的ECS区域(设置Request的EcsRegionId参数,取值参考存储区域标识:https://help.aliyun.com/document_detail/98194.html),* 如果与点播存储(OSS)区域相同,则自动使用内网上传文件至存储,上传更快且更省公网流量* 由于点播API只提供外网域名访问,因此部署上传脚本的ECS服务器必须具有访问外网的权限。** 注意:* 请替换示例中的必选参数,示例中的可选参数如果您不需要设置,请将其删除,以免设置无效参数值与您的预期不符。*/public class UploadVideoDemo {//账号AK信息请填写(必选)private static final String accessKeyId = "<Your accessKeyId>";//账号AK信息请填写(必选)private static final String accessKeySecret = "<Your accessKeySecret>";public static void main(String[] args) {// 一、视频文件上传// 视频标题(必选)String title = "测试标题";// 1.本地文件上传和文件流上传时,文件名称为上传文件绝对路径,如:/User/sample/文件名称.mp4 (必选)// 2.网络流上传时,文件名称为源文件名,如文件名称.mp4(必选)。// 3.流式上传时,文件名称为源文件名,如文件名称.mp4(必选)。// 任何上传方式文件名必须包含扩展名String fileName = "/Users/test/video/test.mp4";// 本地文件上传testUploadVideo(accessKeyId, accessKeySecret, title, fileName);// 待上传视频的网络流地址String url = "http://test.aliyun.com/video/test.mp4";// 2.网络流上传// 文件扩展名,当url中不包含扩展名时,需要设置该参数String fileExtension = "mp4";testUploadURLStream(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();}testUploadStream(accessKeyId, accessKeySecret, title, fileName, inputStream);// 二、图片上传// 1.图片上传-本地文件上传// testUploadImageLocalFile(accessKeyId, accessKeySecret);// 2.图片上传-流式上传(文件流和网络流)// testUploadImageStream(accessKeyId, accessKeySecret);// 三、m3u8文件上传// 1.上传本地m3u8音视频文件testUploadLocalM3u8(accessKeyId, accessKeySecret);// 2.上传网络m3u8音视频文件testUploadWebM3u8(accessKeyId, accessKeySecret);// 四、辅助媒资上传// 辅助媒资-本地文件上传
//        testUploadAttachedMediaLocalFile(accessKeyId, accessKeySecret);// 辅助媒资-流式上传(文件流和网络流)
//        testUploadAttachedMediaStream(accessKeyId, accessKeySecret);}/*** 本地文件上传接口** @param accessKeyId* @param accessKeySecret* @param title* @param fileName*/private static void testUploadVideo(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);/* 设置上传完成后的回调URL(可选),建议您通过点播控制台配置事件通知,参见文档 https://help.aliyun.com/document_detail/55627.html *///request.setCallback("http://callback.sample.com");/* 自定义消息回调设置(可选),参数说明参考文档 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");  //请求视频点播服务的请求IDif (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 testUploadURLStream(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"); //请求视频点播服务的请求IDif (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 testUploadFileStream(String accessKeyId, String accessKeySecret, String title, String fileName) {UploadFileStreamRequest request = new UploadFileStreamRequest(accessKeyId, accessKeySecret, title, fileName);/* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*///request.setShowWaterMark(true);/* 设置上传完成后的回调URL(可选),建议通过点播控制台配置消息监听事件,参见文档 https://help.aliyun.com/document_detail/57029.html *///request.setCallback("http://callback.sample.com");/* 自定义消息回调设置,参数说明参考文档 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"); //请求视频点播服务的请求IDif (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 testUploadStream(String accessKeyId, String accessKeySecret, String title, String fileName, InputStream inputStream) {UploadStreamRequest request = new UploadStreamRequest(accessKeyId, accessKeySecret, title, fileName, inputStream);/* 是否使用默认水印(可选),指定模板组ID时,根据模板组配置确定是否使用默认水印*///request.setShowWaterMark(true);/* 设置上传完成后的回调URL(可选),建议通过点播控制台配置消息监听事件,参见文档 https://help.aliyun.com/document_detail/57029.html *///request.setCallback("http://callback.sample.com");/* 自定义消息回调设置,参数说明参考文档 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");  //请求视频点播服务的请求IDif (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 testUploadImageLocalFile(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 testUploadImageStream(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 testUploadLocalM3u8(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);/* 设置上传完成后的回调URL(可选),建议您通过点播控制台配置事件通知,参见文档 https://help.aliyun.com/document_detail/55627.html *///request.setCallback("http://callback.sample.com");/* 自定义消息回调设置(可选),参数说明参考文档 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 testUploadWebM3u8(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 testUploadAttachedMediaLocalFile(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 testUploadAttachedMediaStream(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;}
}

java+阿里云中的视频点播实现视频的上传和播放相关推荐

  1. 解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题

    解决阿里云oss文件上传部分MP4格式视频文件上传导致上传崩溃问题 问题描述 java程序,使用阿里云oss文件上传服务,在测试时偶然发现,我用苹果手机开启高清进行摄像,将原图通过qq传到电脑上,在电 ...

  2. java 上传视频并播放_java实现视频上传和播放..doc

    java实现视频上传和播放. Java实现视频网站的视频上传.视频转码.视频关键帧抽图, 及视频播放功能 视频网站中提供的在线视频播放功能,播放的都是FLV格式的文件,它是Flash动画文件,可通过F ...

  3. 阿里云点播录制,上传,播放使用说明及遇到的坑

    项目开发中使用阿里云的点播功能,从中遇到了一堆坑,特写此笔记.希望对使用阿里云点播的伙伴们有所帮助. 一.讲解录制功能 首先赋上阿里云的官方录制文档 https://help.aliyun.com/d ...

  4. 如何基于OSS和MPS,快速搭建音视频文件上传服务?

    背景 本文主要介绍如何基于OSS服务和MPS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MPS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS Token ...

  5. 如何基于OSS和MTS,快速搭建音视频文件上传服务?

    摘要: 背景 本文主要介绍如何基于OSS服务和MTS的上传SDK,快速搭建一个音视频文件上传服务. 优势 使用MTS的上传SDK上传音视频文件,具有以下优势: 增加文件列表管理功能. 增加STS To ...

  6. 阿里OSS对象存储,实现图片上传进度显示ProgressListener;

    想了解阿里OSS对象存储,实现图片上传的内容的可看我的另一篇博客,博客中有完整代码,这篇博客是以上一篇阿里OSS对象存储博客为基础,只写一些与进度有关的内容,细心往下看js代码中有需要注意的地方! 实 ...

  7. Android 基于GSYVideoPlayer实现短视频软件上下滑自动播放视频

    先放效果图 两个视频的地址: private final String mp4_a = "http://vfx.mtime.cn/Video/2019/03/19/mp4/190319212 ...

  8. 大视频上传服务器,支持HTML5断点续传,支持4GB以上大视频文件上传

    当前,我们正处于一个视频爆炸的时代,高清智能手机人人都有,各种场景下的视频应用越来越多,4K高清视频正在普及,视频文件尺寸动辄几个GB.当我们需要和他人分享这些大视频时,视频的上传和断点续传文件立马出 ...

  9. 抖音开放平台-视频切片-视频分片上传-不合法的参数ID-不合法的对象ID

    问题描述 1.最近遇到个问题,做业务需要管理几个抖音账号,用抖音开放平台做分片上传视频,多次返回不合法参数id,提交工单之后给的回复没有任何参考价值. 2.例如视频文件按15M进行切片,调用分片上传初 ...

最新文章

  1. c语言实验七实验报告,C语言实验七 数 实验报告.doc
  2. 【Android Gradle 插件】settings.gradle 配置文件 ( 配置基本作用 | include 函数用法 | 目录层级配置 | 修改 Module 模块构建脚本名称 )
  3. VTK:可视化算法之HeadBone
  4. java mysql servlet_Java--用户登录(JDBC,MYSQL,Servlet)
  5. var、let 及 const 区别
  6. 这是一份编程宝典,请查收!
  7. VxWorks中Timer机制
  8. oracle数据库创建用户
  9. 化学堵水剂处理油井出水问题
  10. 【NCD 2019 B】Let me sleep【边双连通分量缩点、树的直径】
  11. 暗影精灵3 PLUS 安装黑苹果
  12. 手机浏览器一键跳转微信加好友和公众号关注的方法
  13. BoltDB学习笔记
  14. wifi路由器如何连接无线网络连接服务器,wifi路由器的使用方法 | 192路由网
  15. 浏览器证书失效问题解决方法
  16. qt连接mysql数据库 mac_Mac系统下Qt 4.8编译连接数据库(Oracle,MySql)
  17. 基于弱网感知的5G QoS保障服务实现方案
  18. Java 实现Dbhelper 支持大数据增删改
  19. 【单片机毕业设计】基于单片机的空气质量(烟雾、有害混合气体)的设计
  20. 319高校毕业设计选题

热门文章

  1. 新人上手第一步 for 菜鸟
  2. 点云中截取自己想要的点云
  3. RabbitMQ-报错Error: unable to perform an operation on node ‘rabbit@xxx‘. Please see diagno
  4. 计算机软件和软件系统区别,软件就是程序(软件和程序的区别是什么)
  5. LUBANSO硬件钱包冷知识,逻辑与查询
  6. 超级干货 :如何创造性地应用深度学习视觉模型于非视觉任务(附代码)
  7. ExtJs 4.1.1 API离线浏览
  8. 中软实训总结_中软实训心得
  9. 常用实验报告LaTex 模板
  10. kaldi单音素模型训练 - train_mono.sh脚本解读