转码是将音视频文件转换成另一个或多个音视频文件,以适应不同网络带宽、不同终端设备和不同的用户需求。当控制台创建的转码任务和工作流均无法满足您的使用场景时,可以按需调用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)
文档反馈