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

使用说明

发起截图任务前,需要先创建截图模板。通过TemplateId(截图模板ID)发起截图任务,发起截图任务时,支持对截图模板参数进行覆盖重置,截图任务处理成功后,可以根据返回的JobId(任务ID)查询该截图任务的详细信息、截图任务列表及截图的访问URL。

示例代码

您可以通过阿里云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)
    }

    // 创建截图模板。
    templateName := "sdk_sample_snapshot_template"
    templateType := int32(2)
    snapshotTemplateConfig := "{\"Type\":\"Normal\",\"FrameType\":\"normal\",\"Time\":0,\"Count\":10}"
    createCustomTemplateRequest := &ice.CreateCustomTemplateRequest{
        Name:           &templateName,
        Type:           &templateType,
        TemplateConfig: &snapshotTemplateConfig,
    }
    createCustomTemplateResponse, err := client.CreateCustomTemplate(createCustomTemplateRequest)
    fmt.Println(createCustomTemplateResponse, err)

    // 发起截图任务。
    templateId := createCustomTemplateResponse.Body.CustomTemplate.TemplateId
    jobName := "sdk_sample_snapshot_job"
    inputType := "Media"
    inputMedia := "3945e42d-1823498****"
    outputType := "Media"
    outputMedia := "3945e42d-1823498****"
    submitSnapshotJobRequest := &ice.SubmitSnapshotJobRequest{
        Name: &jobName,
        Input: &ice.SubmitSnapshotJobRequestInput{
            Type:  &inputType,
            Media: &inputMedia,
        },
        Output: &ice.SubmitSnapshotJobRequestOutput{
            Type:  &outputType,
            Media: &outputMedia,
        },
        TemplateConfig: &ice.SubmitSnapshotJobRequestTemplateConfig{
            TemplateId: templateId,
        },
    }
    submitSnapshotJobResponse, err := client.SubmitSnapshotJob(submitSnapshotJobRequest)
    fmt.Println(createCustomTemplateResponse, err)

    // 查询截图任务详细信息。
    jobId := submitSnapshotJobResponse.Body.JobId
    getSnapshotJobRequest := &ice.GetSnapshotJobRequest{
        JobId: jobId,
    }
    getSnapshotJobResponse, err := client.GetSnapshotJob(getSnapshotJobRequest)
    fmt.Println(getSnapshotJobResponse, err)

    // 获取截图任务列表。
    pageSize := int32(5)
    listSnapshotJobsRequest := &ice.ListSnapshotJobsRequest{
        PageSize: &pageSize,
    }
    listSnapshotJobsResponse, err := client.ListSnapshotJobs(listSnapshotJobsRequest)
    fmt.Println(listSnapshotJobsResponse, err)

    // 获取截图任务输出图片的访问URL。
    getSnapshotUrlsRequest := &ice.GetSnapshotUrlsRequest{
        JobId:    jobId,
        PageSize: &pageSize,
    }
    getSnapshotUrlsResponse, err := client.GetSnapshotUrls(getSnapshotUrlsRequest)
    fmt.Println(getSnapshotUrlsResponse, err)
}      

相关接口