本示例介绍如何使用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());
        }
    }
}