本文介绍VodAppServer的上传与媒体处理功能。
上传功能
VodAppServer支持音视频、图片及辅助媒资上传,基于阿里云视频点播上传SDK提供高效稳定的上传服务。
音视频上传
音视频上传支持四种上传方式:
本地文件:支持分片与断点续传,适合大文件上传。
网络流:通过URL上传,支持断点续传。
文件流:本地文件上传,不支持断点续传。
流式:支持文件流、网络流输入。
本地音视频上传示例:
UploadVideoRequest request = new UploadVideoRequest(accessKeyId, accessKeySecret, title, fileName);
/* 可指定分片上传时每个分片的大小,默认为2M字节 */
request.setPartSize(2 * 1024 * 1024L);
/* 可指定分片上传时的并发线程数,默认为1 */
request.setTaskNum(1);
/* 是否开启断点续传 */
request.setEnableCheckpoint(true);
UploadVideoImpl uploader = new UploadVideoImpl();
UploadVideoResponse response = uploader.uploadVideo(request);
if (response.isSuccess()) {
System.out.print("VideoId=" + response.getVideoId() + "\n");
} else {
System.out.print("ErrorCode=" + response.getCode() + "\n");
System.out.print("ErrorMessage=" + response.getMessage() + "\n");
}图片/辅助媒资上传
图片/辅助媒资上传支持两种上传方式:
本地文件:不支持断点续传。
流式:支持文件流、网络流输入。
本地图片上传示例:
// 图片类型(必选)取值范围:default(默认),cover(封面),watermark(水印)
String imageType = "cover";
UploadImageRequest request = new UploadImageRequest(accessKeyId, accessKeySecret, imageType);
request.setImageType("cover");
// 图片标题(可选)
request.setTitle("短剧封面");
// 本地文件路径
String fileName = "/Users/test/image/cover.png";
request.setFileName(fileName);
UploadImageImpl uploadImage = new UploadImageImpl();
UploadImageResponse response = uploadImage.upload(request);
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文件上传支持两种上传方式:
本地文件:需指定M3U8索引文件及全部分片文件。
网络文件:需指定M3U8索引文件及分片文件URL地址。
STS方式上传
支持使用STS方式进行上传。STS方式需实现VoDRefreshSTSTokenListener接口的onRefreshSTSToken方法,用于文件上传超时时刷新STS信息。
上传进度回调
上传SDK支持进度回调,有以下两种方式:
默认回调:SDK内置开启。
自定义回调:可按需自定义事件处理方式。
内网上传优化
可指定上传ECS区域,与点播存储区域相同时自动启用内网上传,加速传输并节省公网流量。
媒体处理
VodAppServer集成了阿里云媒体处理服务(MPS),支持视频转码、截图及水印等媒体处理。
媒体转码
调用SubmitTranscodeJobs提交转码任务,支持使用自定义转码模板组处理视频。
转码示例:
@RestController
public class MpsController {
@Autowired
private VodSdkService vodSdkService;
/**
* 提交转码任务
*
* @param videoId 待转码的视频 ID
* @param templateGroupId 使用的转码模板组 ID
* @return 转码任务提交结果
*/
@RequestMapping(value = "/submitTransCodeJob", method = {RequestMethod.GET, RequestMethod.POST})
public SubmitTranscodeJobsResponse submitTransCodeJob(
@RequestParam("videoId") String videoId,
@RequestParam("templateGroupId") String templateGroupId) {
return vodSdkService.SubmitTranscodeJobs(videoId, templateGroupId);
}
}说明
转码模板组ID可参考转码模板组创建和获取。
该文章对您有帮助吗?