文档

转码是将音视频文件转换成另一个或多个音视频文件,以适应不同网络带宽、不同终端设备和不同的用户需求。当控制台创建的转码任务和工作流均无法满足您的使用场景时,可以按需调用SubmitJobs接口进行转码。本文提供了Go SDK转码相关功能的API调用示例,包含提交转码作业、查询转码作业、取消转码作业和遍历转码作业。

前提条件

使用前请先初始化客户端,详细说明请参见初始化

提交转码作业

调用SubmitJobs接口,完成提交转码作业。

说明
  • 通过SDK提交作业时Object需经URLEncode,否则会导致作业失败。更多信息,请参见URL Encoding说明

  • 请按照规范填写文件名称,否则会找不到文件导致作业失败。详细名称规范,请参见参数详情

  • 建议您在提交转码作业时记录任务的JobID,便于后续进行查询、遍历等操作。

/**
 * 提交转码作业
 * @param client
 * @return
 */
 func SubmitJobs(client *mts.Client) (*mts.SubmitJobsResponse, error) {
	request := mts.CreateSubmitJobsRequest()
	//构建input, 需要保证Location区域和服务client区域一致
	input := map[string]string {
		"Location": "oss-cn-beijing",
		"Bucket": "<your bucket name>",
		"Object": url.QueryEscape("mps-test/demo/test.mp4"),
	}
	inputJson, _ := json.Marshal(input)
	request.Input = string(inputJson)
	
	//指定输出Bucket
	request.OutputBucket = "<your bucket name>"
	//输出Bucket的所在区域,格式: oss-cn-****, 例如北京oss-cn-beijing
	request.OutputLocation = "oss-cn-beijing"
	//构建一个输出对象
	output := map[string]string{
		"OutputObject": url.QueryEscape("mps-test/demo/test-out.mp4"),
		"TemplateId": templateId,
	}
	outputs := [...]map[string]string {output}
	outputsJson, _ := json.Marshal(outputs)
	request.Outputs = string(outputsJson)

	// PipelineId
	request.PipelineId = pipelineId;

	return client.SubmitJobs(request)
 }

查询转码作业

调用QueryJobList接口,完成查询转码作业。

/**
 * 查询转码作业
 * @param client
 * @return
 */
 func queryJobList(client *mts.Client) (*mts.QueryJobListResponse, error) {
	request := mts.CreateQueryJobListRequest()
	//支持查询多个JobID,一次最多查询10个,使用半角逗号(,)分隔
	request.JobIds = "606179a72c64ee2b6****"
	return client.QueryJobList(request)
 }

取消转码作业

调用CancelJob接口,完成取消转码作业。

 /**
 * 取消转码作业
 * @param client
 * @return
 */
 func cancelJob(client *mts.Client) (*mts.CancelJobResponse, error) {
	request := mts.CreateCancelJobRequest()
	request.JobId = "606179a72c64ee2b6****"
	return client.CancelJob(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);
}

完整代码

package main

import (
	"encoding/json"
	"fmt"
	"net/url"

	mts "github.com/aliyun/alibaba-cloud-sdk-go/services/mts"
)

/**
 * 提交转码作业
 * @param client
 * @return
 */
func SubmitJobs(client *mts.Client) (*mts.SubmitJobsResponse, error) {
	request := mts.CreateSubmitJobsRequest()
	//构建input, 需要保证Location区域和服务client区域一致
	input := map[string]string{
		"Location": "oss-cn-beijing",
		"Bucket":   "<your bucket name>",
		"Object":   url.QueryEscape("mps-test/demo/test.mp4"),
	}
	inputJson, _ := json.Marshal(input)
	request.Input = string(inputJson)

	//指定输出Bucket
	request.OutputBucket = "<your bucket name>"
	//输出Bucket的所在区域,格式: oss-cn-****, 例如北京oss-cn-beijing
	request.OutputLocation = "oss-cn-beijing"
	//构建一个输出对象
	output := map[string]string{
		"OutputObject": url.QueryEscape("mps-test/demo/test-out.mp4"),
		"TemplateId":   templateId,
	}
	outputs := [...]map[string]string{output}
	outputsJson, _ := json.Marshal(outputs)
	request.Outputs = string(outputsJson)

	// PipelineId
	request.PipelineId = pipelineId

	return client.SubmitJobs(request)
}

/**
 * 查询转码作业
 * @param client
 * @return
 */
func queryJobList(client *mts.Client) (*mts.QueryJobListResponse, error) {
	request := mts.CreateQueryJobListRequest()
	//支持查询多个JobID,一次最多查询10个,使用半角逗号(,)分隔
	request.JobIds = "606179a72c64ee2b6****"
	return client.QueryJobList(request)
}

/**
 * 取消转码作业
 * @param client
 * @return
 */
func cancelJob(client *mts.Client) (*mts.CancelJobResponse, error) {
	request := mts.CreateCancelJobRequest()
	request.JobId = "606179a72c64ee2b6****"
	return client.CancelJob(request)
}

/**
 * 遍历转码作业
 * @param client
 * @return
 */
func listJob(client *mts.Client) (*mts.ListJobResponse, error) {
	request := mts.CreateListJobRequest()
	request.State = "All"
	return client.ListJob(request)
}

const (
	//模板ID
	templateId = "S00000001-200010"
	//管道ID, 可以在MPS控制台 > 全局设置 > 管道及回调查看
	pipelineId = "bee7a540a0cbf4****"
)

func main() {
	//初始化调用 client
	client, err := InitMtsClient()
	if err != nil {
		panic(err)
	}
	response, err := SubmitJobs(client)
	if err != nil {
		panic(err)
	}
	fmt.Println("RequestId is:", response.RequestId)
	if response.JobResultList.JobResult[0].Success {
		fmt.Println("JobId is:", response.JobResultList.JobResult[0].Job.JobId)
		jsonData, _ := json.Marshal(response.JobResultList.JobResult)
		fmt.Println("Job is:", string(jsonData))
	} else {
		fmt.Println("SubmitJobs Failed code:", response.JobResultList.JobResult[0].Code, "message:", response.JobResultList.JobResult[0].Message)
	}
}

相关文档

  • 本页导读 (1)
文档反馈