Go SDK可通过AccessKey或STS Security Token初始化。您可以根据需求选择初始化方式。本文介绍两种初始化的操作流程。
背景信息
视频点播服务端SDK提供两种初始化方式。AccessKey方式根据授权策略获取对应权限,启用后一直有效,建议在服务端使用。STS Security Token方式根据授权策略获取相应权限后,可以自定义过期时间。
前提条件
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)
}
}
说明
- 获取更多信息,请参见阿里云SDK开发指南-使用Go SDK。
- Go SDK同时支持并发调用和泛化调用。
- 示例代码下载:test_vod.go。