详情页标题前

腾讯云云点播Go SDK

详情页1

对于在服务端上传视频的场景,云点播提供 Go SDK 来实现。上传流程请参见 服务端上传指引

集成方式

使用 go get 引入

go get -u github.com/tencentcloud/tencentcloud-sdk-gogo get -u github.com/tencentyun/cos-go-sdk-v5go get -u github.com/tencentyun/vod-go-sdk

通过源码包安装

如果项目中需要直接引用源码,可以直接下载源码导入项目中使用:从 Github 访问单击下载 Go SDK

简单视频上传

初始化上传对象

使用云 API 密钥初始化 VodUploadClient 实例。

import (    "github.com/tencentyun/vod-go-sdk")
client := &vod.VodUploadClient{}client.SecretId = "your secretId"client.SecretKey = "your secretKey"

构造上传请求对象

import (    "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common")
req := vod.NewVodUploadRequest()req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")

调用上传

调用上传方法,传入接入点地域及上传请求。

rsp, err := client.Upload("ap-guangzhou", req)if err != nil {    fmt.Println(err)    return}fmt.Println(*rsp.Response.FileId)fmt.Println(*rsp.Response.MediaUrl)

说明:上传方法根据用户文件的长度,自动选择普通上传以及分片上传,用户不用关心分片上传的每个步骤,即可实现分片上传。

高级功能

携带封面

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt")
func main() { client := &vod.VodUploadClient{} client.SecretId = "your secretId" client.SecretKey = "your secretKey"
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4") req.CoverFilePath = common.StringPtr("/data/video/Wildlife-cover.png")
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl) fmt.Println(*rsp.Response.CoverUrl)}

指定任务流

首先 创建任务流模板 并为模板命名,发起任务流时,可以用任务流模板名设置Procedure参数,上传成功后会自动执行任务流。

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt")
func main() { client := &vod.VodUploadClient{} client.SecretId = "your secretId" client.SecretKey = "your secretKey"
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4") req.Procedure = common.StringPtr("Your Proceducre Name")
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl)}

应用上传

传入 应用 ID,上传成功后资源只属于具体的应用。

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt")
func main() { client := &vod.VodUploadClient{} client.SecretId = "your secretId" client.SecretKey = "your secretKey"
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4") req.SubAppId = common.Uint64Ptr(101)
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl)}

指定存储地域

控制台 确认已经开通目标存储地域,若没有开通可以参考 上传存储设置,最后通过StorageRegion属性设置存储地域的 英文简称

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt")
func main() { client := &vod.VodUploadClient{} client.SecretId = "your secretId" client.SecretKey = "your secretKey"
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4") req.StorageRegion = common.StringPtr("ap-chongqing")
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl)}

指定分片并发数

分片并发数是针对大文件,拆分成多个分片同时进行上传。分片并发上传的优势在于可以快速完成单个文件的上传,SDK 会根据用户文件的长度,自动选择普通上传以及分片上传,用户不用关心分片上传的每个步骤,即可实现分片上传。而文件的分片并发数通过ConcurrentUploadNumber参数进行指定。

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt")
func main() { client := &vod.VodUploadClient{} client.SecretId = "your secretId" client.SecretKey = "your secretKey"
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4") req.ConcurrentUploadNumber = common.Uint64Ptr(5)
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl)}

使用临时证书上传

传入 临时证书 的相关密钥信息,使用临时证书验证身份并进行上传。

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt")
func main() { client := &vod.VodUploadClient{} client.SecretId = "Credentials TmpSecretId" client.SecretKey = "Credentials TmpSecretKey" client.Token = "Credentials Token"
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl)}

设置代理上传

设置上传代理,涉及协议及数据都会经过代理进行处理,开发者可以借助代理在自己公司内网上传文件到腾讯云

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt" "net/http" "net/url")
func main() { client := &vod.VodUploadClient{} client.SecretId = "your secretId" client.SecretKey = "your secretKey" proxyUrl, _ := url.Parse("your proxy url") client.Transport = &http.Transport{ Proxy: http.ProxyURL(proxyUrl), }
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/Wildlife.mp4")
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl)}

自适应码流文件上传

本 SDK 支持上传的自适应码流格式包括 HLS 和 DASH,同时要求 manifest(M3U8 或 MPD)所引用的媒体文件必须为相对路径(即不可以是 URL 和绝对路径),且位于 manifest 的同级目录或者下级目录(即不可以使用../)。在调用 SDK 上传接口时,MediaFilePath参数填写 manifest 路径,SDK 会解析出相关的媒体文件列表一并上传。

package main
import ( "github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common" "github.com/tencentyun/vod-go-sdk" "fmt")
func main() { client := &vod.VodUploadClient{} client.SecretId = "your secretId" client.SecretKey = "your secretKey"
req := vod.NewVodUploadRequest() req.MediaFilePath = common.StringPtr("/data/video/prog_index.m3u8")
rsp, err := client.Upload("ap-guangzhou", req) if err != nil { fmt.Println(err) return } fmt.Println(*rsp.Response.FileId) fmt.Println(*rsp.Response.MediaUrl) fmt.Println(*rsp.Response.CoverUrl)}

接口描述

上传客户端类VodUploadClient

属性名称 属性描述 类型 必填
SecretId 云 API 密钥 ID String
SecretKey 云 API 密钥 Key String

上传请求类VodUploadRequest

属性名称 属性描述 类型 必填
MediaFilePath 待上传的媒体文件路径。必须为本地路径,不支持 URL。 String 指针
SubAppId 云点播 应用 ID。如果要访问应用中的资源,则将该字段填写为应用 ID,否则无需填写该字段。 uint64 指针
MediaType 待上传的媒体文件类型,可选类型请参见 媒体上传综述,若 MediaFilePath 路径带后缀可不填。 String 指针
MediaName 上传后的媒体名称,若不填默认采用 MediaFilePath 的文件名。 String 指针
CoverFilePath 待上传的封面文件路径。必须为本地路径,不支持 URL。 String 指针
CoverType 待上传的封面文件类型,可选类型请参见 媒体上传综述,若 CoverFilePath 路径带后缀可不填。 String 指针
Procedure 上传后需要自动执行的任务流名称,该参数在创建任务流(API 方式控制台方式)时由用户指定。具体请参考 任务流综述 String 指针
ExpireTime 媒体文件过期时间,格式按照 ISO 8601 标准表示,详见 ISO 日期格式说明 String 指针
ClassId 分类 ID,用于对媒体进行分类管理,可通过 创建分类 接口,创建分类,获得分类 ID。 int64 指针
SourceContext 来源上下文,用于透传用户请求信息,上传回调接口将返回该字段值,最长250个字符。 String 指针
StorageRegion 存储地域,指定预期希望存储的地域,该字段填写为存储地域的 英文简称 String 指针
ConcurrentUploadNumber 分片并发数,针对大文件分片时有效。 Integer

上传响应类 VodUploadResponse

属性名称 属性描述 类型
Response 上传返回结果信息 struct
Response.FileId 媒体文件的唯一标识 String 指针
Response.MediaUrl 媒体播放地址 String 指针
Response.CoverUrl 媒体封面地址 String 指针
Response.RequestId 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。 String 指针

上传方法 VodUploadClient.Upload(region string, request *VodUploadRequest)

参数名称 参数描述 类型 必填
region 接入点地域,即请求到哪个地域的云点播服务器,不同于存储地域,具体参考支持的 地域列表 String
request 上传请求 VodUploadRequest 指针

错误码表

状态码 含义
InternalError 内部错误。
InvalidParameter.ExpireTime 参数值错误:过期时间。
InvalidParameterValue.CoverType 参数值错误:封面类型。
InvalidParameterValue.MediaType 参数值错误:媒体类型。
InvalidParameterValue.SubAppId 参数值错误:应用 ID。
InvalidParameterValue.VodSessionKey 参数值错误:点播会话。
ResourceNotFound 资源不存在。



云点播官网1折活动,限时活动,即将结束,速速收藏
同尘科技为腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:http://www.yunxiaoer.com/143410.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 在阿里函数计算里转到FC3.0后,第一次更新函数,会让原来挂载的OSS 对象存储变成禁用该怎么解决?-云小二-阿里云

    在阿里函数计算里转到FC3.0后,第一次更新函数,会让原来挂载的OSS 对象存储变成禁用该怎么解决? 以下为热心网友提供的参考意见 您先用2.0吧 这个修复还在发布中。此回答来自钉群阿里函数计算官网客户。

    阿里云 2023年12月13日
  • 阿里云RDS数据库调整代理数量-云淘科技

    RDS独享代理可以根据监控数据和业务规划方便快捷地调整代理数量。 前提条件 开通并配置数据库代理服务 注意事项 调整代理数量会导致应用闪断,请确保系统具备重连机制。 操作步骤 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。 在左侧导航栏单击数据库代理。 在开通数量(个)处修改数量,然后单击应用。 说明 推荐的代理个数为主实例及只读实例CPU核数的…

    2023年12月9日
  • 阿里云人工智能平台PAIDesigner常见问题-云淘科技

    本文提供Designer各类常见问题的入口链接汇总。 Designer算法支持哪些MaxCompute数据类型的字段 x13_auto_arima组件运行报错 Doc2Vec组件运行报错CallExecutorToParseTaskFail 如何将运行画布节点输出的临时表数据进行持久化存储? 运行组件报错:提示没有MaxCompute操作权限 使用组件列选择…

    阿里云人工智能平台PAI 2023年12月10日
  • 阿里云负载均衡配置负载均衡实例-云淘科技

    创建负载均衡实例后,您需要对负载均衡实例进行配置才能进行流量转发,您需要添加至少一个监听和一组后端服务器。本指南指引您配置一个TCP监听并添加部署了静态网页的两个ECS实例(ECS01和ECS02)作为后端服务器。 操作步骤 登录负载均衡管理控制台。 在实例管理页面,单击要配置监听的实例操作列的监听配置向导。 在协议&监听配置向导,根据以下信息,配置…

    2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储CRC64 校验

    简介 数据在客户端和服务器间传输时可能会出现错误,COS 除了可以通过 MD5 和自定义属性 验证数据完整性外,还可以通过 CRC64 检验码来进行数据校验。COS 会对新上传的对象进行 CRC64 计算,并将结果作为对象的属性进行存储,随后在返回的响应头部中携带 x-cos-hash-crc64ecma,该头部表示上传对象的 CRC64 值,根据 ECMA…

    腾讯云 2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。