阿里云视频点播(ApsaraVideo VoD)是集音视频采集、编辑、上传、自动化转码处理、媒体资源管理、高效云剪辑处理、分发加速、视频播放于一体的一站式音视频点播解决方案。
阿里云视频点播基于阿里云强大的基础设施服务,面向视频网站、短视频、在线教育、娱乐社交、新闻传媒等行业,提供端-云-端的视频全链路服务,帮助企业和开发者快速搭建安全、弹性、高效、可定制的视频点播平台和应用。
2. 功能(1)支持的上传方式 ——上传
控制台上传,SDK上传,服务端(JAVA)上传,客户端上传:Web端(Javascript)、移动端(Android,iOS),离线拉取上传,PC客户端工具上传,并支持直播录制转点播。
(2)媒体管理和生产 ——处理
视频点播支持对上传后的视频进行管理和剪辑。
(3)分发播放 ——播放
视频点播支持播放音频和视频文件,您可以通过控制台预览、集成阿里云播放器SDK和集成第三方播放器进行播放。
二. Java SDK实现视频点播使用视频点播实现音视频上传、存储、处理和播放的整体流程如下:
用户获取上传授权 —— VOD下发上传地址和凭证及VideoId —— 用户上传视频并保存视频ID(VideoId)—— 用户服务端获取播放授权 —— 用户客户端请求播放地址与凭证,VOD下发播放地址与带时效的播放凭证。—— 用户服务端将播放凭证下发给客户端完成视频播放
1. 开通视频点播(1)登录视频点播控制台
(2)单击开通服务
(3)选择视频点播服务,仔细阅读并选中视频点播服务协议,点击立即开通
(4)开通完成后,即可进入VOD控制台概览页面,开始使用点播服务。
2. 获取视频上传凭证和播放凭证初始化
@Value("${aliyun.access-key-id}")
private String accessKeyId;
@Value("${aliyun.access-key-secret}")
private String accessKeySecret;
@PostConstruct
private void initialize(){
String regionId = "cn-shanghai";
DefaultProfile profile = DefaultProfile.getProfile(regionId, accessKeyId, accessKeySecret);
defaultAcsClient = new DefaultAcsClient(profile);
}
获取视频上传地址和凭证
private DefaultAcsClient defaultAcsClient;
public VideoAccessInfo createUploadVideo(UploadVideo uploadVideo) throws Exception {
CreateUploadVideoRequest createUploadVideoRequest = transformRequest(uploadVideo);
CreateUploadVideoResponse response = defaultAcsClient.getAcsResponse(createUploadVideoRequest);
return transformResponse(response);
}
public VideoAccessInfo transformResponse(CreateUploadVideoResponse response) {
VideoAccessInfo videoAccessInfo = new VideoAccessInfo();
videoAccessInfo.setRequestId(response.getRequestId());
videoAccessInfo.setUploadAddress(response.getUploadAddress());
videoAccessInfo.setUploadAuth(response.getUploadAuth());
videoAccessInfo.setVideoId(response.getVideoId());
return videoAccessInfo;
}
刷新视频上传凭证
public VideoAccessInfo refreshUploadVideo(RefreshUpload refreshUpload) throws Exception {
RefreshUploadVideoRequest request = new RefreshUploadVideoRequest();
request.setVideoId(refreshUpload.getVideoId());
RefreshUploadVideoResponse response = defaultAcsClient.getAcsResponse(request);
return transformResponse(response);
}
public VideoAccessInfo transformResponse(RefreshUploadVideoResponse response) {
VideoAccessInfo videoAccessInfo = new VideoAccessInfo();
videoAccessInfo.setRequestId(response.getRequestId());
videoAccessInfo.setUploadAddress(response.getUploadAddress());
videoAccessInfo.setUploadAuth(response.getUploadAuth());
videoAccessInfo.setVideoId(response.getVideoId());
return videoAccessInfo;
}
获取视频播放凭证
public VideoPlayAuthVo getVideoPlayAuth(VideoPlayAuthRequest videoPlayAuthRequest) throws ClientException {
GetVideoPlayAuthRequest request = new GetVideoPlayAuthRequest();
request.setVideoId(videoPlayAuthRequest.getVideoId());
request.setAuthInfoTimeout(videoPlayAuthRequest.getAuthInfoTimeout());
return transformResponse(defaultAcsClient.getAcsResponse(request));
}
private VideoPlayAuthVo transformResponse(GetVideoPlayAuthResponse response) {
VideoPlayAuthVo videoPlayAuthVo = new VideoPlayAuthVo();
videoPlayAuthVo.setRequestId(response.getRequestId());
videoPlayAuthVo.setPlayAuth(response.getPlayAuth());
videoPlayAuthVo.setCoverURL(response.getVideometa().getCoverURL());
videoPlayAuthVo.setDuration(response.getVideometa().getDuration());
videoPlayAuthVo.setStatus(response.getVideometa().getStatus());
videoPlayAuthVo.setTitle(response.getVideometa().getTitle());
videoPlayAuthVo.setVideoId(response.getVideometa().getVideoId());
return videoPlayAuthVo;
}
注意:客户端上传只能上传单个文件,服务端上传可以批量上传。



