Skip to content

TTvcloud/vcloud-sdk-golang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go SDK使用方式

安装

go get github.com/TTvcloud/vcloud-sdk-golang

AK/SK设置

  • 在代码里显示调用VodService的方法SetAccessKey/SetSecretKey

  • 在当前环境变量中分别设置 VCLOUD_ACCESSKEY="your ak" VCLOUD_SECRETKEY = "your sk"

  • json格式放在~/.vcloud/config中,格式为:{"ak":"your ak","sk":"your sk"}

以上优先级依次降低,建议在代码里显示设置,以便问题排查

地域Region设置

  • 目前已开放三个地域设置,分别为
    - cn-north-1 (默认)
    - ap-singapore-1
    - us-east-1
    
  • 默认为cn-north-1(NewInstance初始化即默认为该地域),如果需要调用其它地域服务,请在初始化函数NewInstanceWithRegion中传入指定地域region,例如:
    ret, err := vod.NewInstanceWithRegion("us-east-1").GetRedirectPlayUrl(params)
    
  • 注意1:IAM模块目前只开放cn-north-1区域
  • 注意2:不要同时调用NewInstanceWithRegion 和 NewInstance,因为初始化为单例模式,会导致第二次调用不生效

API

上传

  • 通过指定url地址上传

UploadMediaByUrl

  • 服务端直接上传

上传视频包括 ApplyUploadCommitUpload 两步

上传封面图包括 ApplyUploadModifyVideoInfo 两步

为方便用户使用,封装方法 UploadVideo 和 UploadPoster, 一步上传

  • STS2 鉴权

点播提供的 API

GetVideoPlayAuth ( vidList,streamTypeList,watermarkList []string)

vidList、streamTypeList、watermarkList 为3种资源,分别代表视频vid、stream type和水印三种资源,切片为空是代表允许访问所有资源。

默认的 action 为 vod::GetPlayInfo(不需手动设置)

默认过期时间为1小时,可以通过如下 API 自定义过期时间

GetVideoPlayAuthWithExpiredTime(vidList, streamTypeList, watermarkList []string, expiredTime time.Duration)

示例代码:

func main() {
       instance := vod.NewInstance()
       vidList, streamTypeList, watermarkList := make([]string, 0), make([]string, 0), make([]string, 0)
       ret, _ := instance.GetVideoPlayAuth(vidList, streamTypeList, watermarkList)
       b, _ := json.Marshal(ret)
       fmt.Println(string(b))
}

自定义 STS2 授权模式

// 第1步 创建 Policy
inlinePolicy := new(base.Policy)

// 第2步 创建  actions 和 resources
actions := []string{"service:Method"} // eg: vod:GetPlayInfo
resources := make([]string, 0)
// 其中每个 resource 格式类似 "trn:vod::*:video_id/%s",若允许全部则用 * 替代,否则用实际字符串替代,本例可以填写实际的 vid
if len(vidList) == 0 {
       resources = append(resources, fmt.Sprintf(ResourceVideoFormat, "*"))
} else {
       for _, vid := range vidList {
              resources = append(resources, fmt.Sprintf(ResourceVideoFormat, vid))
       }
}

// 第3步 创建 Statement,允许的 NewAllowStatement, 拒绝的 NewDenyStatement,并添加到 Policy 对应的 Statement 切片里
statement := base.NewAllowStatement(actions, resources)
inlinePolicy.Statement = append(inlinePolicy.Statement, statement)

// 第4步 调用 SignSts2 生成签名
return SignSts2(inlinePolicy, expiredTime)

转码

StartTranscode

发布

SetVideoPublishStatus

播放

GetPlayInfo

GetOriginVideoPlayInfo

GetRedirectPlay

封面图

GetPosterUrl

token相关

上传 非STS2 token: GetUploadAuthToken

上传 STS2 token: 参考STS2的示例

GetPlayAuthToken

PS: 上述两个接口和 GetRedirectPlay 接口中均含有 X-Amz-Expires 这个参数

关于这个参数的解释为:设置返回的playAuthToken或uploadToken或follow 302地址的有效期,目前服务端默认该参数为15min(900s),如果用户认为该有效期过长,可以传递该参数来控制过期时间 。

直播相关

CreateStream

MGetStreamsPushInfo

MGetStreamsPlayInfo

GetVODs

GetRecords

GetSnapshots

GetOnlineUserNum

GetStreamTimeShiftInfo

更多示例参见

example目录