上传与媒体处理

本文介绍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可参考转码模板组创建和获取。

媒体处理还支持视频截图媒体审核视频AI视频图文水印等功能,同时支持对媒资进行批量处理。