Go SDK可通过AccessKey或STS Security Token初始化。您可以根据需求选择初始化方式。本文介绍两种初始化的操作流程。

背景信息

视频点播服务端SDK提供两种初始化方式。AccessKey方式根据授权策略获取对应权限,启用后一直有效,建议在服务端使用。STS Security Token方式根据授权策略获取相应权限后,可以自定义过期时间。

前提条件

  • 您已经安装了视频点播服务端Go SDK。安装步骤,请参见安装
  • 您已经知晓服务接入地域,例如:接入地域在上海,请使用cn-shanghai。点播服务的接入地域请参见接入地域和标识

AccessKey初始化

调用服务端接口需要使用AccessKey完成身份验证,请提前获取AccessKey。获取方法请参见获取AccessKey

填入AccessKey信息,进行初始化。示例如下:
package main

import (
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/vod"
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
    "fmt"
)

func InitVodClient(accessKeyId  string, accessKeySecret string) (client *vod.Client, err error) {

    // 点播服务接入地域
    regionId := "cn-shanghai"

    // 创建授权对象
    credential := &credentials.AccessKeyCredential{
        accessKeyId,
        accessKeySecret,
    }

    // 自定义config
    config := sdk.NewConfig()
    config.AutoRetry = true      // 失败是否自动重试
    config.MaxRetryTime = 3      // 最大重试次数
    config.Timeout = 3000000000  // 连接超时,单位:纳秒;默认为3秒

    // 创建vodClient实例
    return vod.NewClientWithOptions(regionId, config, credential)
}

STS初始化

使用STS方式进行初始化,需要提前准备好STS Token。获取方法,请参见STS访问授权

填入STS信息,进行初始化。示例如下:
package main

import (
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk"
    "github.com/aliyun/alibaba-cloud-sdk-go/services/vod"
    "github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
    "fmt"
)

func InitVodClient(accessKeyId  string, accessKeySecret string, securityToken string) (client *vod.Client, err error) {

    // 点播服务接入地域
    regionId := "cn-shanghai"

    // 创建授权对象
    credential := &credentials.StsTokenCredential{
        accessKeyId,
        accessKeySecret,
        securityToken,
    }

    // 连接设置
    config := sdk.NewConfig()
    config.AutoRetry = true      // 失败是否自动重试
    config.MaxRetryTime = 3      // 最大重试次数
    config.Timeout = 3000000000  // 连接超时,单位:纳秒;默认为3秒

    // 创建vodClient实例
    return vod.NewClientWithOptions(regionId, config, credential)
}

使用说明

创建API请求时,调用的方法名为vod.Create${apiName}Request,其中${apiName}需要替换成要使用的视频点播API,视频点播API名称请参见API概览

调用示例

调用获取播放地址接口GetPlayInfo为例。示例如下:
func MyGetPlayInfo(client *vod.Client, videoId string) (response *vod.GetPlayInfoResponse, err error) {
    // 创建API请求并设置参数,调用vod.Create${apiName}Request
    request := vod.CreateGetPlayInfoRequest()
    request.VideoId = videoId
    request.AcceptFormat = "JSON"

    // 发起请求并处理异常,调用client.${apiName}(request)
    return client.GetPlayInfo(request)
}

func main() {
    client, err := InitVodClient("<AccessKeyId>", "<AccessKeySecret>")
    if err != nil {
        // 异常处理
        panic(err)
    }

    response, err := MyGetPlayInfo(client, "<videoId>")
    if err != nil {
        // 异常处理
        panic(err)
    }

    // fmt.Println(response)
    playList := response.PlayInfoList.PlayInfo
    for _, playInfo := range playList {
        // 打印清晰度和对应的播放地址
        fmt.Printf("%s: %s\n", playInfo.Definition, playInfo.PlayURL)
    }
}
说明