提交音视频转码任务

最近更新时间:2023-07-25 18:02:32

我的收藏

简介

本文档提供关于提交音视频转码任务相关的 API 概览以及 SDK 示例代码。
API
操作描述
提交音视频转码任务

SDK API 参考

SDK 所有接口的具体参数与方法说明,请参考 SDK API

提交音视频转码任务

功能说明

提交音视频转码任务
注意
COS Android SDK 版本需要大于等于 v5.9.14。

示例代码

// 存储桶名称,格式为 BucketName-APPID
String bucket = "examplebucket-1250000000";
// 对象键,是对象在 COS 上的完整路径,如果带目录的话,格式为 "dir1/object1"
String object = "dir1/exampleobject.mp4";
// 输出路径文件夹
String outputResultPath = "media/job_result/";
SubmitTranscodeJobRequest request = new SubmitTranscodeJobRequest(bucket);
// 请求实体
SubmitTranscodeJob submitTranscodeJob = new SubmitTranscodeJob();
SubmitTranscodeJob.SubmitTranscodeJobInput input = new SubmitTranscodeJob.SubmitTranscodeJobInput();
// 文件路径
input.object = object;
submitTranscodeJob.input = input;
// 输出配置
SubmitTranscodeJob.SubmitTranscodeJobOutput output = new SubmitTranscodeJob.SubmitTranscodeJobOutput();
// 输出存储桶地域
output.region = "ap-guangzhou";
// 输出存储桶
output.bucket = bucket;
// 输出结果的文件名;是否必传:是;
output.object = outputResultPath+"video_transcode.${ext}";
// 操作配置
SubmitTranscodeJob.SubmitTranscodeJobOperation operation = new SubmitTranscodeJob.SubmitTranscodeJobOperation();
// 转码模板id
//operation.templateId = "t1460606b9752148c4ab182f55163ba7cd";
ArrayList<String> watermarkTemplateId = new ArrayList<>();
SubmitTranscodeJob.SubmitTranscodeJobTranscode transcode = new SubmitTranscodeJob.SubmitTranscodeJobTranscode();
TemplateTranscode.TemplateTranscodeContainer container = new TemplateTranscode.TemplateTranscodeContainer();
container.format = "avi";
transcode.container = container;
operation.transcode = transcode;
watermarkTemplateId.add("t1318c5f428d474afba1797f84091cbe22");
watermarkTemplateId.add("t1318c5f428d474afba1797f84091cbe23");
watermarkTemplateId.add("t1318c5f428d474afba1797f84091cbe24");
// 水印模板 ID,可以传多个水印模板 ID,最多传3个。;是否必传:否;
//operation.watermarkTemplateId = watermarkTemplateId;
List<TemplateWatermark.Watermark> watermarks = new ArrayList<>();
TemplateWatermark.TemplateWatermarkText watermarkText = new TemplateWatermark.TemplateWatermarkText();
// 字体大小;是否必传:是;默认值:无;限制:值范围:[5 100],单位 px;
watermarkText.fontSize = "10";
// 字体类型;是否必传:是;默认值:无;
watermarkText.fontType = "simfang.ttf";
// 字体颜色;是否必传:是;默认值:无;限制:格式:0xRRGGBB;
watermarkText.fontColor = "0x000000";
//透明度;是否必传:是;默认值:无;限制:值范围:[1 100],单位%;
watermarkText.transparency = "30";
// 水印内容;是否必传:是;默认值:无;限制:长度不超过64个字符,仅支持中文、英文、数字、_、-和*;
watermarkText.text = "水印内容";
TemplateWatermark.Watermark watermark1 = new TemplateWatermark.Watermark();
// 水印类型;是否必传:是;默认值:无;限制:Text:文字水印、 Image:图片水印;
watermark1.type = "Text";
// 基准位置;是否必传:是;默认值:无;限制:TopRight、TopLeft、BottomRight、BottomLeft、Left、Right、Top、Bottom、Center;
watermark1.pos = "Center";
// 偏移方式;是否必传:是;默认值:无;限制:Relativity:按比例,Absolute:固定位置;
watermark1.locMode = "Absolute";
// 水平偏移;是否必传:是;默认值:无;限制:1. 在图片水印中,如果 Background 为 true,当 locMode 为 Relativity 时,为%,值范围:[-300 0];当 locMode Absolute 时,为 px,值范围:[-4096 0]。2. 在图片水印中,如果 Background 为 false,当 locMode 为 Relativity 时,为%,值范围:[0 100];当 locMode Absolute 时,为 px,值范围:[0 4096]。3. 在文字水印中,当 locMode 为 Relativity 时,为%,值范围:[0 100];当 locMode 为 Absolute 时,为 px,值范围:[4096]。4. 当Pos为Top、Bottom和Center时,该参数无效。;
watermark1.dx = "10";
// 垂直偏移;是否必传:是;默认值:无;限制:1. 在图片水印中,如果 Background 为 true,当 locMode 为 Relativity 时,为%,值范围:[-300 0];当 locMode Absolute 时,为 px,值范围:[-4096 0]。2. 在图片水印中,如果 Background 为 false,当 locMode 为 Relativity 时,为%,值范围:[0 100];当 locMode Absolute 时,为 px,值范围:[0 4096]。3. 在文字水印中,当 locMode 为 Relativity 时,为%,值范围:[0 100];当 locMode 为 Absolute 时,为 px,值范围:[4096]。4. 当Pos为Left、Right和Center时,该参数无效。;
watermark1.dy = "20";
// 文本水印节点;是否必传:否;默认值:无;限制:无;
watermark1.text = watermarkText;
watermarks.add(watermark1);
TemplateWatermark.Watermark watermark2 = new TemplateWatermark.Watermark();
watermark2.type = "Text";
watermark2.pos = "Center";
watermark2.locMode = "Absolute";
watermark2.dx = "20";
watermark2.dy = "10";
watermark2.text = watermarkText;
watermarks.add(watermark2);
// 水印模板参数,同创建水印模板接口中的 Request.Watermark ,最多传3个。;是否必传:否;
operation.watermark = watermarks;
SubmitTranscodeJob.SubmitTranscodeJobSubtitles subtitles = new SubmitTranscodeJob.SubmitTranscodeJobSubtitles();
List<SubmitTranscodeJob.SubmitTranscodeJobSubtitle> subtitleList = new ArrayList<>();
SubmitTranscodeJob.SubmitTranscodeJobSubtitle subtitle1 = new SubmitTranscodeJob.SubmitTranscodeJobSubtitle();
subtitle1.url = "https://srt.com/media/test1.srt";
subtitleList.add(subtitle1);
SubmitTranscodeJob.SubmitTranscodeJobSubtitle subtitle2 = new SubmitTranscodeJob.SubmitTranscodeJobSubtitle();
subtitle2.url = "https://srt.com/media/test2.srt";
subtitleList.add(subtitle2);
subtitles.subtitle = subtitleList;
// 字幕参数, H265、AV1编码和非mkv封装 暂不支持该参数;是否必传:否;
operation.subtitles = subtitles;
operation.output = output;
// 任务优先级,级别限制:0 、1 、2 。级别越大任务优先级越高,默认为0;是否必传:否;
operation.jobLevel = "0";
// 透传用户信息, 可打印的 ASCII 码, 长度不超过1024;是否必传:否;
operation.userData = "userData";
submitTranscodeJob.operation = operation;
// 任务回调格式,JSON 或 XML,默认 XML,优先级高于队列的回调格式;是否必传:否;
submitTranscodeJob.callBackFormat = "XML";
// 任务回调类型,Url 或 TDMQ,默认 Url,优先级高于队列的回调类型;是否必传:否;
submitTranscodeJob.callBackType = "Url";
// 任务回调地址,优先级高于队列的回调地址。设置为 no 时,表示队列的回调地址不产生回调;是否必传:否;
submitTranscodeJob.callBack = "http://callback.demo.com";
// 更多配置请查看api文档或者SDK源码
request.setSubmitTranscodeJob(submitTranscodeJob);
ciService.submitTranscodeJobAsync(request, new CosXmlResultListener() {
@Override
public void onSuccess(CosXmlRequest request, CosXmlResult cosResult) {
// result 提交音视频转码任务的结果
// 详细字段请查看api文档或者SDK源码
SubmitTranscodeJobResult result = (SubmitTranscodeJobResult) cosResult;
}
@Override
public void onFail(CosXmlRequest request, CosXmlClientException clientException, CosXmlServiceException serviceException) {
if (clientException != null) {
clientException.printStackTrace();
} else {
serviceException.printStackTrace();
}
}
});
说明
更多完整示例,请前往 GitHub 查看。