简介
本文档提供关于提交音视频转码任务相关的 API 概览以及 SDK 示例代码。
API | 操作描述 |
提交音视频转码任务 |
SDK API 参考
提交音视频转码任务
功能说明
提交音视频转码任务
注意
COS Android SDK 版本需要大于等于 v5.9.14。
示例代码
// 存储桶名称,格式为 BucketName-APPIDString 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() {@Overridepublic void onSuccess(CosXmlRequest request, CosXmlResult cosResult) {// result 提交音视频转码任务的结果// 详细字段请查看api文档或者SDK源码SubmitTranscodeJobResult result = (SubmitTranscodeJobResult) cosResult;}@Overridepublic void onFail(CosXmlRequest request, CosXmlClientException clientException, CosXmlServiceException serviceException) {if (clientException != null) {clientException.printStackTrace();} else {serviceException.printStackTrace();}}});
说明