通过阅读本文,您可以了解通过服务端SDK调用OpenAPI创建智能媒体服务剪辑合成任务的示例代码。

使用说明

创建合成任务时,您可以根据实际需求通过Timeline、TemplateId或ProjectId其中之一创建。

示例代码

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

package main

import (
    "fmt"
    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    ice "github.com/alibabacloud-go/ice-20201109/v2/client"
    "github.com/aliyun/credentials-go/credentials"
    "github.com/alibabacloud-go/tea/tea"
)

func main() {

    // 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
    // 本示例以将AccessKey ID和 AccessKey Secret保存在环境变量为例说明。配置方法请参见:https://help.aliyun.com/document_detail/378661.html。
    credential, _err := credentials.NewCredential(nil)
    if _err != nil {
      panic(_err)
    }
    iceClient, _err := ice.NewClient(&openapi.Config{
      Credential: credential,
      Endpoint: tea.String("ice.cn-shanghai.aliyuncs.com"),
    })

    // 如需硬编码AccessKey ID和AccessKey Secret,代码如下,强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
    // config := new(openapi.Config)
    // config.SetAccessKeyId("<accessKeyId>").
    //     SetAccessKeySecret("<accessKeySecret>").
    //     SetRegionId("<regionId>").
    //     SetEndpoint("<endpoint>")
    // iceClient, _err := ice.NewClient(config)

    if _err != nil {
      panic(_err)
    }

    // 通过timeline创建合成任务。
    timeLine := "{\"VideoTracks\":[{\"VideoTrackClips\":[{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****9b4d7cf14dc7b83b0e801cbe****\"},{\"MediaId\":\"****1656bca4474999c961a6d2a2****\"}]}]}"
    outputMediaConfig := "{\"mediaURL\":\"http://ice-editing.oss-cn-hangzhou.aliyuncs.com/ice/\",\"type\":\"unkown\"}"
    projectMetadata := "{\"coverURL\":\"http://****/mediaid.jpg\",\"description\":\"description\",\"title\":\"title\"}"
    submitMediaProducingJobRequest := ice.SubmitMediaProducingJobRequest{
        Timeline:          &timeLine,
        OutputMediaConfig: &outputMediaConfig,
        ProjectMetadata:   &projectMetadata,
    }
    submitMediaProducingJobResult, err := iceClient.SubmitMediaProducingJob(&submitMediaProducingJobRequest)
    fmt.Println(submitMediaProducingJobResult, err)

    // 通过模板创建合成任务。
    templateId := "IceSys_VideoMerge"
    clipsParam := "{\"VideoArray\":[\"****g105512043f49f697f74258u****\",\"****f82788e810116a45109f2ebb****\",\"****f267f44f4964e6c998dee89i****\",]}"
    submitMediaProducingJobRequest1 := ice.SubmitMediaProducingJobRequest{
        TemplateId:      &templateId,
        ClipsParam:      &clipsParam,
        ProjectMetadata: &projectMetadata,
    }
    submitMediaProducingJobResult1, err := iceClient.SubmitMediaProducingJob(&submitMediaProducingJobRequest1)
    fmt.Println(submitMediaProducingJobResult1, err)

    // 通过project创建合成任务。
    projectId := "****9b4d7cf14dc7b83b0e801cbe****"
    submitMediaProducingJobRequest2 := ice.SubmitMediaProducingJobRequest{
        ProjectId:       &projectId,
        ProjectMetadata: &projectMetadata,
    }
    submitMediaProducingJobResult2, err := iceClient.SubmitMediaProducingJob(&submitMediaProducingJobRequest2)
    fmt.Println(submitMediaProducingJobResult2, err)

    // 获取单个合成任务。
    jobId := "****967f44f4964e6c998dee8e****"
    getMediaProducingJobRequest := ice.GetMediaProducingJobRequest{
        JobId: &jobId,
    }
    getMediaProducingJobResult, err := iceClient.GetMediaProducingJob(&getMediaProducingJobRequest)
    fmt.Println(getMediaProducingJobResult, err)
}

相关接口