文档

转码

更新时间:

转码是将音视频文件转换成另一个或多个音视频文件,以适应不同网络带宽、不同终端设备和不同的用户需求。当控制台创建的转码任务和工作流均无法满足您的使用场景时,可以按需调用SubmitJobs接口进行转码。本文提供了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://help.aliyun.com/document_detail/602834.html
 * queryJobList  查询转码作业 https://help.aliyun.com/document_detail/602836.html
 * cancelJob  取消转码作业 https://help.aliyun.com/document_detail/602835.html
 * listJob  遍历转码作业 https://help.aliyun.com/document_detail/602837.html
 * 具体参数详情参考  https://help.aliyun.com/document_detail/29253.html
 *
 * *****   main方法     ******
 * main方法中仅以submitJobs作为调用示例, 如需调用其他方法请自行替换response
 */
public class TransCodeJobs {

    //管道ID, 可以在MPS控制台 > 全局设置 > 管道及回调查看
    private static String pipelineId = "bee7a540a0cbf4****";
    //模板ID, 预置模板参考 https://help.aliyun.com/document_detail/29256.html
    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);
    }
}
            

相关文档