转码任务

更新时间:
复制 MD 格式

通过阅读本文,您可以了解通过服务端SDK调用OpenAPI发起并查询智能媒体服务转码任务的示例代码。

使用说明

发起转码任务时,需要先根据用户所提供的regionId(提供服务的地域)、Inputs(转码任务的输入配置)、OutputGroups(转码作业输出组配置列表)参数提交转码任务。转码任务处理成功后,可以根据返回的JobId(任务ID)查询该转码任务信息。

转码任务参数需注意以下几点:

  • regionId为提供服务的地域。

  • Inputs和OutputGroups对应的输入输出文件,必须处于同一地域regionId。

  • templateId可通过转码模板管理页面获取。

完整参数结构参见 MediaConvertJobConfig

说明

regionId支持地域请参考服务地域。

示例代码

您可以通过阿里云OpenAPI开发者门户在线调试。

package main

import (
  "encoding/json"
  "strings"
  "fmt"
  "os"
  ice20201109  "github.com/alibabacloud-go/ice-20201109/v7/client"
  openapi  "github.com/alibabacloud-go/darabonba-openapi/v2/client"
  util  "github.com/alibabacloud-go/tea-utils/v2/service"
  credential  "github.com/aliyun/credentials-go/credentials"
  "github.com/alibabacloud-go/tea/tea"
)


// Description:
// 
// 使用凭据初始化账号Client
// 
// @return Client
// 
// @throws Exception
func CreateClient () (_result *ice20201109.Client, _err error) {
  // 工程代码建议使用更安全的无AK方式,凭据配置方式请参见:https://help.aliyun.com/document_detail/378661.html。
  credential, _err := credential.NewCredential(nil)
  if _err != nil {
    return _result, _err
  }

  config := &openapi.Config{
    Credential: credential,
  }
  // Endpoint 请参考 https://api.aliyun.com/product/ICE
  // cn-shanghai 可替换为所使用的regionId
  config.Endpoint = tea.String("ice.cn-shanghai.aliyuncs.com")
  _result = &ice20201109.Client{}
  _result, _err = ice20201109.NewClient(config)
  return _result, _err
}

func _main (args []*string) (_err error) {
  client, _err := CreateClient()
  if _err != nil {
    return _err
  }

  submitMediaConvertJobRequest := &ice20201109.SubmitMediaConvertJobRequest{
    Config: tea.String("{\"Inputs\":[{\"InputFile\":{\"Type\":\"OSS\",\"Media\":\"http://<bucket name>.oss-cn-shanghai.aliyuncs.com/input/**/60min.mp4\"}}],\"OutputGroups\":[{\"GroupConfig\":{\"Type\":\"File\",\"OutputFileBase\":{\"Type\":\"OSS\",\"Media\":\"http://<bucket name>.oss-cn-shanghai.aliyuncs.com/output/**/\"}},\"Outputs\":[{\"OutputFileName\":\"hd.mp4\",\"TemplateId\":\"<TemplateId>\"},{\"OutputFileName\":\"sd.mp4\",\"TemplateId\":\"<TemplateId>\"}]}]}"),
    UserData: tea.String("{\"videoId\":\"abcd\"}"),
  }
  runtime := &util.RuntimeOptions{}
  tryErr := func()(_e error) {
    defer func() {
      if r := tea.Recover(recover()); r != nil {
        _e = r
      }
    }()
    resp, _err := client.SubmitMediaConvertJobWithOptions(submitMediaConvertJobRequest, runtime)
    if _err != nil {
      return _err
    }

    fmt.Printf("[LOG] %v\n", resp)

    return nil
  }()

  if tryErr != nil {
    var error = &tea.SDKError{}
    if _t, ok := tryErr.(*tea.SDKError); ok {
      error = _t
    } else {
      error.Message = tea.String(tryErr.Error())
    }
    // 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
    // 错误 message
    fmt.Println(tea.StringValue(error.Message))
    // 诊断地址
    var data interface{}
    d := json.NewDecoder(strings.NewReader(tea.StringValue(error.Data)))
    d.Decode(&data)
    if m, ok := data.(map[string]interface{}); ok {
      recommend, _ := m["Recommend"]
      fmt.Println(recommend)
    }
  }
  return _err
}


func main() {
  err := _main(tea.StringSlice(os.Args[1:]))
  if err != nil {
    panic(err)
  }
}

相关接口