本文提供了Java SDK转码相关功能的API调用示例,包含提交转码作业、查询转码作业、取消转码作业和遍历转码作业。
前提条件
使用前请先初始化客户端,详细操作请参见初始化。
提交转码作业
调用SubmitJobs接口,完成提交转码作业。
说明
- 通过SDK提交转码作业时Object需经URLEncode,否则会导致转码失败。更多信息,请参见URL Encoding说明。
- 请按照规范填写文件名称,否则会找不到文件导致转码失败。详细名称规范,请参见参数详情。
- 建议您在提交转码作业时记录任务的JobID,便于后续进行查询、遍历等操作。
/**
* 提交转码作业
* @param client
* @return
* @throws Exception
*/
public static SubmitJobsResponse submitJobs(DefaultAcsClient client) throws Exception {
SubmitJobsRequest request = new SubmitJobsRequest();
//构建输出参数
JSONArray outputs = new JSONArray();
//构建input, 需要保证Location区域和服务client区域一致
JSONObject input = new JSONObject();
input.put("Location", "oss-cn-beijing");
input.put("Bucket", "<your bucket name>");
//构建一个输出对象
JSONObject output = new JSONObject();
try {
input.put("Object", URLEncoder.encode("mps-test/demo/test.mp4", "utf-8"));
String outPutObject = URLEncoder.encode("mps-test/demo/test-out.mp4", "utf-8");
output.put("OutputObject", outPutObject);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("input URL encode failed");
}
output.put("TemplateId", templateId);
outputs.add(output);
request.setInput(input.toJSONString());
request.setOutputs(outputs.toJSONString());
//指定输出Bucket
request.setOutputBucket("<your bucket name>");
//输出Bucket的所在区域,格式: oss-cn-****, 例如北京oss-cn-beijing
request.setOutputLocation("oss-cn-beijing");
// PipelineId
request.setPipelineId(pipelineId);
return client.getAcsResponse(request);
}
查询转码作业
调用QueryJobList接口,完成查询转码作业功能。
/**
* 查询转码作业
* @param client
* @return
* @throws Exception
*/
public static QueryJobListResponse queryJobList(DefaultAcsClient client) throws Exception {
QueryJobListRequest request = new QueryJobListRequest();
//支持查询多个JobID,一次最多查询10个,使用半角逗号(,)分隔
request.setJobIds("606179a72c64e572e****");
return client.getAcsResponse(request);
}
取消转码作业
调用CancelJob接口,完成取消转码作业功能。
/**
* 取消转码作业
* @param client
* @return
* @throws Exception
*/
public static CancelJobResponse cancelJob(DefaultAcsClient client) throws Exception {
CancelJobRequest request = new CancelJobRequest();
request.setJobId("606179a72c64ee2b6****");
return client.getAcsResponse(request);
}
遍历转码作业
调用ListJob接口,完成遍历转码作业功能。
/**
* 遍历转码作业
* @param client
* @return
* @throws Exception
*/
public static ListJobResponse listJob(DefaultAcsClient client) throws Exception {
ListJobRequest request = new ListJobRequest();
request.setState("All");
return client.getAcsResponse(request);
}
完整代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.mts.model.v20140618.*;
import com.aliyuncs.profile.DefaultProfile;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
/**
* ***** 使用须知 ******
* 本demo为基本的转码处理示例,不含水印、拼接等操作
*
* ***** 方法介绍 ******
* submitJobs 提交转码任务 https://www.alibabacloud.com/help/zh/apsaravideo-for-media-processing/latest/api-doc-mts-2014-06-18-api-doc-submitjobs
* queryJobList 查询转码作业 https://www.alibabacloud.com/help/zh/apsaravideo-for-media-processing/latest/api-doc-mts-2014-06-18-api-doc-queryjoblist
* cancelJob 取消转码作业 https://www.alibabacloud.com/help/zh/apsaravideo-for-media-processing/latest/api-doc-mts-2014-06-18-api-doc-canceljob
* listJob 遍历转码作业 https://www.alibabacloud.com/help/zh/apsaravideo-for-media-processing/latest/api-doc-mts-2014-06-18-api-doc-listjob
* 具体参数详情参考 https://www.alibabacloud.com/help/zh/apsaravideo-for-media-processing/latest/parameter-details-a
*
* ***** main方法 ******
* main方法中仅以submitJobs作为调用示例, 如需调用其他方法请自行替换response
*/
public class TransCodeJobs {
//管道ID, 可以在MPS控制台 > 全局设置 > 管道查看
private static String pipelineId = "bee7a540a0cbf4****";
//模板ID, 预置模板参考 https://www.alibabacloud.com/help/zh/apsaravideo-for-media-processing/latest/yuzhimobanxiangqing
private static String templateId = "S00000001-200010";
public static void main(String[] args) throws ClientException {
//初始化调用 client
DefaultAcsClient client = InitClient.initMpsClient();
SubmitJobsResponse response;
try {
response = submitJobs(client);
System.out.println("RequestId is:"+response.getRequestId());
//多个output请遍历getJobResultList()获取结果
if (response.getJobResultList().get(0).getSuccess()) {
System.out.println("JobId is:" + response.getJobResultList().get(0).getJob().getJobId());
System.out.println("Response is:" + JSON.toJSONString(response));
} else {
System.out.println("SubmitJobs Failed code:" + response.getJobResultList().get(0).getCode() +
" message:" + response.getJobResultList().get(0).getMessage());
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 提交转码作业
* @param client
* @return
* @throws Exception
*/
public static SubmitJobsResponse submitJobs(DefaultAcsClient client) throws Exception {
SubmitJobsRequest request = new SubmitJobsRequest();
//构建输出参数
JSONArray outputs = new JSONArray();
//构建input, 需要保证Location区域和服务client区域一致
JSONObject input = new JSONObject();
input.put("Location", "oss-cn-beijing");
input.put("Bucket", "<your bucket name>");
//构建一个输出对象
JSONObject output = new JSONObject();
try {
input.put("Object", URLEncoder.encode("mps-test/demo/test.mp4", "utf-8"));
String outPutObject = URLEncoder.encode("mps-test/demo/test-out.mp4", "utf-8");
output.put("OutputObject", outPutObject);
} catch (UnsupportedEncodingException e) {
throw new RuntimeException("input URL encode failed");
}
output.put("TemplateId", templateId);
outputs.add(output);
request.setInput(input.toJSONString());
request.setOutputs(outputs.toJSONString());
//指定输出bucket
request.setOutputBucket("<your bucket name>");
//输出bucket的所在区域,格式: oss-cn-****, 例如北京 oss-cn-beijing
request.setOutputLocation("oss-cn-beijing");
// PipelineId
request.setPipelineId(pipelineId);
return client.getAcsResponse(request);
}
/**
* 查询转码作业
* @param client
* @return
* @throws Exception
*/
public static QueryJobListResponse queryJobList(DefaultAcsClient client) throws Exception {
QueryJobListRequest request = new QueryJobListRequest();
//支持查询多个JobID,一次最多查询10个,使用半角逗号(,)分隔
request.setJobIds("6061772c64e3c2****");
return client.getAcsResponse(request);
}
/**
* 取消转码作业
* @param client
* @return
* @throws Exception
*/
public static CancelJobResponse cancelJob(DefaultAcsClient client) throws Exception {
CancelJobRequest request = new CancelJobRequest();
request.setJobId("60617872c64e53f9d796f****");
return client.getAcsResponse(request);
}
/**
* 遍历转码作业
* @param client
* @return
* @throws Exception
*/
public static ListJobResponse listJob(DefaultAcsClient client) throws Exception {
ListJobRequest request = new ListJobRequest();
request.setState("All");
return client.getAcsResponse(request);
}
}