本示例介绍如何使用Alibaba Cloud SDK for Java调用SubmitJobs接口创建一个提交转码作业。
前提条件
一个转码输出会生成一个转码作业,接口返回转码作业列表。作业会添加到管道中被调度执行,执行完成后需要调用QueryJobList接口轮询作业执行结果,也可使用异步通知机制。
使用预置模板对输入文件进行转码,须要先调用SubmitAnalysisJob(提交模板分析作业)接口。分析作业成功完成后,可以通过调用QueryAnalysisJobList(查询模板分析作业)接口获取该输入文件的可用预置模版列表。若提交的转码作业中指定的预置模板不在可用的预置模板列表中,转码作业会失败。
在执行作业前,您需要获取以下信息:
- 模板ID
调用QueryTemplateList接口查看要使用的模板ID。
- 管道ID
调用QueryPipelineList接口查看要使用的管道ID。
确保您已经安装了Alibaba Cloud SDK for Java,准确的SDK版本号,请参见 阿里云开发工具包(SDK)。
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>java.demo</groupId>
<artifactId>test</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-core -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.4.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.aliyun/aliyun-java-sdk-mts -->
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-mts</artifactId>
<version>2.7.2</version>
</dependency>
</dependencies>
</project>
示例代码
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.mts.model.v20140618.*;
import com.aliyuncs.profile.DefaultProfile;
import com.google.gson.Gson;
public class SubmitJobs {
public static void main(String[] args) {
// 创建QuerySnapshotJobList实例并初始化
DefaultProfile profile = DefaultProfile.getProfile(
"<your-region-id>", // 地域ID
"<your-access-key-id>", // 您的AccessKey ID
"<your-access-key-secret>" ); // 您的AccessKey Secret
IAcsClient client = new DefaultAcsClient(profile);
SubmitJobsRequest request = new SubmitJobsRequest();
/*
* 开始封装参数Input、OutputBucket、OutputLocation、Outputs、PipelineId
*/
// Input 作业输入,JSON对象,Input定义详见附录-参数详情-19
request.setInput("{\"Bucket\":\"example-bucket\","
+ "\"Location\":\"oss-cn-hangzhou\","
+ "\"Object\":\"example.flv\"}");
// OutputBucket输出Bucket,需在控制台中完成云资源授权。
request.setOutputBucket("<your-oss-output-object>");
// OutputLocation 输出 Bucket 所在数据中心。 默认值:oss-cn-hangzhou
request.setOutputLocation("<your-oss-output-location>");
// Outputs由Output列表构成,JSON数组,大小上限为30。 Output的参数说明见附录 参数Output详情。
// 此JSON字符串仅做参考请根据自身实际情况进行参数变动
request.setOutputs("[{\"OutputObject\":\"example-output.flv\","
+ "\"TemplateId\":\"S00000000-000010\","
+ "\"WaterMarks\":[{"
+ "\"InputFile\":{"
+ "\"Bucket\":\"example-bucket\","
+ "\"Location\":\"oss-cn-hangzhou\","
+ "\"Object\":\"example-logo.png\"},"
+ "\"WaterMarkTemplateId\":\"88c6ca184c0e47098a5b665e2a126797\"}],"
+ "\"UserData\":\"testid-001\"}]");
//PipelineId 管道ID :若需要异步通知,须保证此管道绑定了可用的消息主题。
request.setPipelineId("<your-oss-PipelineId>");
try {
SubmitJobsResponse response = client.getAcsResponse(request);
// 处理返回参数
System.out.println(new Gson().toJson(response));
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
System.out.println("ErrCode:" + e.getErrCode());
System.out.println("ErrMsg:" + e.getErrMsg());
System.out.println("RequestId:" + e.getRequestId());
}
}
}