最近更新时间:2023.12.05 11:26:11
首次发布时间:2022.12.01 12:07:11
您可通过服务端 SDK for Go 来调用慢直播 OpenAPI,实现快速开发。我们提供了多语言的服务端 SDK,功能包括:
SDK 封装了签名,避免过于繁琐的自行计算。
SDK 封装了常用的 OpenAPI 调用,包含请求和响应,并提供了对应的示例,例如空间管理、设备管理、视频流管理、证书管理、视图、慢直播媒体管理、级联操作等。
SDK 封装了常用的操作流程,比如服务端生成临时安全凭证。
火山引擎 SDK for Go 项目
火山引擎 SDK for Go 版本发布
使用以下方法安装火山引擎 SDK for Go:
go get -u github.com/volcengine/volc-sdk-golang
您需要获取火山引擎账号的 Access Key 和 Secret Key(AK/AK)来初始化服务端 SDK。可通过火山引擎控制台右上角『个人 > API访问密钥』获取火山引擎账号的 AK/SK(建议使用子账号的 AK/SK),如下图所示:
为保证账号和数据的安全,建议通过以下步骤将获取的火山引擎账号的 AK/SK 配置为长期访问凭证,然后在代码中使用环境变量获取 AK/SK 的方式进行调用。本章节介绍不同操作系统下配置长期访问凭证的操作步骤。
2. 在文件末尾添加火山引擎账号的 AK/SK,然后保存文件并退出。nano ~/.bash_profile
3. 执行以下命令生效配置信息。export ACCESS_KEY=AKLTNTM0NDdlZTJkZmEwNDZjNmFjMzhlN2NlNmExxxxxxxx export SECRET_KEY=TjJVNE1qQmpNemMyWmpNeE5ESXdPRGhqTW1GaU1qSTJNMkpqWldRxxxxxx==
4. 执行以下命令验证配置信息。source ~/.bash_profile
如果配置成功,则返回如下结果:echo $ACCESS_KEY echo $SECRET_KEY
AKLTNTM0NDdlZTJkZmEwNDZjNmFjMzhlN2NlNmExxxxxxxx TjJVNE1qQmpNemMyWmpNeE5ESXdPRGhqTW1GaU1qSTJNMkpqWldRxxxxxx==
使用以下方法初始化客户端:
AK/SK 信息可从环境变量获取,详细的配置方式,参考 配置长期访问凭证。
func InitSDKClient() { var ak, sk, host string { ak = os.Getenv("ACCESS_KEY") sk = os.Getenv("SECRET_KEY") host = "open.volcengineapi.com" } aiot.DefaultInstance.Client.SetAccessKey(ak) aiot.DefaultInstance.Client.SetSecretKey(sk) aiot.DefaultInstance.SetHost(host) }
注:可点击以下说明中对应的接口名称链接到火山引擎文档中心查看接口的参数定义。
示例:
createSpace := &aiot.CreateSpaceRequest{ AccessType: "gb28181", GB: GB{ PullOnDemand: true, }, Region: "cn-beijing-a", SpaceName: "golang-sdk-create", } resp, _, err := aiot.DefaultInstance.CreateSpace(createSpace)
示例:
spaceQuery := &aiot.SpaceRequest{ SpaceID: spaceID, } deleteRes, _, err := aiot.DefaultInstance.DeleteSpace(spaceQuery)
示例:
space, _, err := aiot.DefaultInstance.GetSpace(&aiot.SpaceRequest{ SpaceID: spaceID, })
示例:
updateArg := &aiot.UpdateSpaceRequest{ SpaceID: spaceID, Description: &description, } respUpdateSpace, _, err := aiot.DefaultInstance.UpdateSpace(updateArg)
示例:
spaceQuery := &aiot.SpaceRequest{ SpaceID: spaceID, } //启用空间 resp1, _, err = aiot.DefaultInstance.StartSpace(spaceQuery) //停用空间 resp, _, err = aiot.DefaultInstance.StopSpace(spaceQuery)
示例:
listSpace := &aiot.ListSpacesRequest{} respListSpaces, _, err := aiot.DefaultInstance.ListSpaces(listSpace)
示例:
add := aiot.AddSpaceDomainRequest{ SpaceID: "***", Domain: "***", Type: "push", } res, _, err := aiot.DefaultInstance.AddSpaceDomain(add)
示例:
update := &aiot.UpdateSpaceDomainRequest{ SpaceID: "***", SpaceDomain: "***", Default: true, } res, _, err := aiot.DefaultInstance.UpdateSpaceDomain(update)
示例:
res, _, err := aiot.DefaultInstance.GetSpaceDomain(spaceID, domain)
示例:
res, _, err := aiot.DefaultInstance.ListSpaceDomains(spaceID)
示例:
res, _, err := aiot.DefaultInstance.DeleteSpaceDomain(spaceID, domain)
示例:
cert := &aiot.UploadCertRequest{ CertName: "***", CertDesc: "***", SSLPublic: "***", SSLPrivate: "***", } res, _, err := aiot.DefaultInstance.UploadCert(cert)
示例:
list := &aiot.ListCertificatesRequest{ PageSize: 20, PageNumber: 1, } res, _, err := aiot.DefaultInstance.ListCertificates(list)
示例:
res, _, err := aiot.DefaultInstance.CertDetail(chainID string)
示例:
bind := &aiot.BindCertRequest{ SpaceID: "***", Domain: "***", ChainID: "***", DomainType: "***", } res, _, err := aiot.DefaultInstance.BindCert(bind)
示例:
unbind := &aiot.UnbindCertRequest{ SpaceID: "***", Domain: "***", } res, _, err := aiot.DefaultInstance.UnbindCert(unbind)
示例:
del := &aiot.DeleteCertRequest{ ChainID: "***", } res, _, err := aiot.DefaultInstance.DeleteCert(del)
示例:
enable := &aiot.UpdateAuthInSpaceRequest{ SpaceID: "***", Domain: "***", MainKey: "***", SpareKey: "***", ValidDuration: int64, } res, _, err := aiot.DefaultInstance.UpdateAuthInSpace(enable)
示例:
res, _, err := aiot.DefaultInstance.DisableAuthInSpace(spaceID, domain string)
示例:
resp, _, err := aiot.DefaultInstance.GetSpaceTemplate(&aiot.SpaceRequest{ SpaceID: "***", })
示例:
set := &aiot.SetSpaceTemplateRequest{ TemplateID: "***", TemplateType: "record", SpaceID: "***", } resp, _, err := aiot.DefaultInstance.SetSpaceTemplate(set)
示例:
check := &aiot.CheckBindTemplateRequest{ TemplateID: "***", TemplateType: "record", PageNumber: 1, PageSize : 20, } resp, _, err := aiot.DefaultInstance.CheckBindTemplate(check)
示例:
cancel := &aiot.CancelBindTemplateRequest{ SpaceID: "***", TemplateType: "record", } resp, _, err := aiot.DefaultInstance.CancelBindTemplate(check)
示例:
list := &aiot.ListDevicesRequest{ SpaceID: "***", PageSize: 20, PageNumer: 1, } res, _, err := aiot.DefaultInstance.ListDevices(list)
示例:
deviceReq := &aiot.CreateDeviceRequest{ SpaceID: spaceID, Type: deviceType.String(), DeviceName: "***", DeviceNSID: &sipID, Username: &sipID, Password: &password, AutoPullAfterRegister: &autoPull, Description: "***", } res, _, err := aiot.DefaultInstance.CreateDevice(deviceReq)
示例:
get := &aiot.GetDeviceRequest{ SpaceID: "***", DeviceID: "***", } res, _, err := aiot.DefaultInstance.GetDevice(get)
示例:
channels := &aiot.DeviceRequest{ DeviceID: "***", } res, _, err := aiot.DefaultInstance.GetDeviceChannels(channels)
示例:
update := &aiot.UpdateDeviceRequest{ DeviceID: "***", Description: "update", } res, _, err := aiot.DefaultInstance.UpdateDevice(update)
示例:
device := &aiot.DeviceRequest{ DeviceID: "***", } //启用设备 res, _, err := aiot.DefaultInstance.StartDevice(device) //停用设备 res, _, err := aiot.DefaultInstance.StopDevice(device)
示例:
del := &aiot.DeviceRequest{ DeviceID: "***", } res, _, err := aiot.DefaultInstance.DeleteDevice(del)
示例:
fresh := &aiot.FreshDeviceRequest{ SpaceID: "***", DeviceID: "***", } res, _, err := aiot.DefaultInstance.FreshDevice(fresh)
示例:
gen := &aiot.GenSipIDRequest{ DeviceType: "***", SipServerID: "***", } res, _, err := aiot.DefaultInstance.GenSipID(gen)
示例:
list := &aiot.ListStreamsRequest{ SpaceID: "***", PageSize: 20, PagenNumber: 1, } res, _, err := aiot.DefaultInstance.ListStreams(list)
示例:
get := &aiot.StreamRequest{ StreamID: "***", } res, _, err := aiot.DefaultInstance.GetStream(get)
示例:
cre := &aiot.CreateStreamRequest{ SpaceID: "***", StreamName: "new_stream", } res, _, err := aiot.DefaultInstance.CreateStream(cre)
示例:
update := &aiot.UpdateStreamRequest{ SpaceID: "***", StreamID: "***", Description: "***", } res, _, err := aiot.DefaultInstance.UpdateStream(update)
示例:
stream := &aiot.StreamRequest{ StreamID: "***", } //启用、停用视频流 res, _ err := aiot.DefaultInstance.StartStream(stream) res, _ err := aiot.DefaultInstance.StopStream(stream) //禁用、解禁视频流 res, _ err := aiot.DefaultInstance.ForbidStream(stream) res, _ err := aiot.DefaultInstance.UnforbidStream(stream)
示例:
del := &aiot.StreamRequest{ StreamID: "***", } res, _, err := aiot.DefaultInstance.DeleteStream(del)
示例:
records := &aiot.ListHistoryRequest{ SpaceID: "***", StreamID: "***", PageSize: 20, PagenNumber: 1, StartTs: "2021-12-07T18:30:00+08:00", EndTs: "2021-12-07T18:30:00+08:00", } res, _, err := aiot.DefaultInstance.ListDeviceRecords(records)
示例:
screenshots := &aiot.ListHistoryRequest{ SpaceID: "***", StreamID: "***", PageSize: 20, PagenNumber: 1, StartTs: "2021-12-07T18:30:00+08:00", EndTs: "2021-12-07T18:30:00+08:00", } res, _, err := aiot.DefaultInstance.ListDeviceScreenshots(screenshots)
示例:
cloud := &aiot.CloudRecordPlayRequest{ StreamID: "***", StartTs: "1664173508", EndTs: "1664173508", TokenValid: 3600, } res, _, err := aiot.DefaultInstance.CloudRecordPlay(cloud)
示例:
get := &aiot.GetStreamDataRequest{ StreamID: "***", StartTime: "1664173508", EndTime: "1664173508", } res, _, err := aiot.DefaultInstance.GetStreamData(get)
logs := &aiot.StreamLogsRequest{ StreamID: "***", StartTs: "1664173508", EndTs: "1664173508", PageSize: 20, PageNumber: 1, } res, _, err := aiot.DefaultInstance.StreamLogs(logs)
示例:
set := &aiot.SetAlarmGuardRequest{ DeviceNSID: "***", ChannelID: "***", Enable: "true", } res, _, err := aiot.DefaultInstance.SetAlarmGuard(set)
示例:
reset := &aiot.ResetAlarmRequest{ DeviceNSID: "***", ChannelID: "***", } res, _, err := aiot.DefaultInstance.ResetAlarm(reset)
示例:
list := &aiot.ListAlarmNotifyRequest{ PageSize: 20, PageNumber: 1, DeviceNSID: "***", ChannelID: "***", StartTime: 1660031340, EndTime: 1660031340, AlarmMethod: []int{}, AlarmPriority: []int{}, AlarmType2: []int{}, AlarmType5: []int{}, AlarmType6: []int{}, } res, _, err := aiot.DefaultInstance.ListAlarmNotify(list)
示例:
res, _, err := aiot.DefaultInsance.DeleteAlarmNotify(notifyID string)
示例:
list := &aiot.ListTemplateRequest{ PageSize: 1, PageNumber: 1, } res, _, err := aiot.DefaultInstance.ListScreenshotTemplates(list)
示例:
get := &aiot.TemplateRequest{ TemplateID: "***", } res, _, err := aiot.DefaultInstance.GetScreenshotTemplate(get)
示例:
create := &aiot.CreateTemplateRequest{ TemplateName: "***", Screenshot: &aiot.ScreenshotTemplate{ ScreenshotPeriod: 10000, Bucket: aiot.TemplateBucketConfig{ Path: "/aiot-snapshot/pic/", }, TTL: aiot.TemplateTTLConfig{ Days: -1, }, Type: []aiot.ScreenshotType{"realtime"}, }, } res, _, err := aiot.DefaultInstance.CreateScreenshotTemplate(create)
示例:
update := &aiot.UpdateTemplateRequest{ TemplateID: "***", TemplateName: "new template", } res, _, err := aiot.DefaultInstnace.UpdateScreenshotTemplate(update)
示例:
del := &aiot.DeleteTemplateRequest{ TemplateID: "***", TemplateType: "screenshot", } res, _, err := aiot.DefaultInstance.DeleteScreenshotTemplate(del)
示例:
list := &aiot.ListTemplateRequest{ PageSize: 1, PageNumber: 1, } res, _, err := aiot.DefaultInstance.ListRecordTemplates(list)
示例:
get := &aiot.TemplateRequest{ TemplateID: "***", } res, _, err := aiot.DefaultInstance.GetRecordTemplate(get)
示例:
create := &aiot.CreateTemplateRequest{ TemplateName: "***", Record: &aiot.RecordTemplate{ RecordDuration: 10000, Bucket: aiot.TemplateBucketConfig{ Path: "/aiot-record/", }, TTL: aiot.TemplateTTLConfig{ Days: -1, }, Type: "realtime", Format: "hls", }, } res, _, err := aiot.DefaultInstance.CreateRecordTemplate(create)
示例:
update := &aiot.UpdateTemplateRequest{ TemplateID: "***", TemplateName: "new template", } res, _, err := aiot.DefaultInstnace.UpdateRecordTemplate(update)
示例:
del := &aiot.DeleteTemplateRequest{ TemplateID: "***", TemplateType: "record", } res, _, err := aiot.DefaultInstance.DeleteRecordTemplate(del)
示例:
list := &aiot.ListTemplateRequest{ PageSize: 1, PageNumber: 1, } res, _, err := aiot.DefaultInstance.ListAITemplates(list)
示例:
get := &aiot.TemplateRequest{ TemplateID: "***", } res, _, err := aiot.DefaultInstance.GetAITemplate(get)
示例:
create := &aiot.CreateTemplateRequest{ TemplateName: "***", AI: &aiot.AITemplate{ ImageTTL: 10, TemplateItems: map[string]aiot.AITemplateItem{ "hinder": aiot.AITemplateItem{ CapabilityType: "hinder", ConfidenceThreshold: 50, EnableTimes: aiot.EnableTimes{ { EnableFrom: "00:00:00", EnableTo: "23:59:59", }, }, Extra: nil, FrameInterval: 1000, GrabStrategy: "timing", Status: true, }, }, }, } res, _, err := aiot.DefaultInstance.CreateAITemplate(create)
示例:
update := &aiot.UpdateTemplateRequest{ TemplateID: "***", TemplateName: "new template", } res, _, err := aiot.DefaultInstnace.UpdateAITemplate(update)
示例:
del := &aiot.DeleteTemplateRequest{ TemplateID: "***", TemplateType: "ai", } res, _, err := aiot.DefaultInstance.DeleteAITemplate(del)
示例:
req := &aiot.GetDataProjectWithBindWidthAndFlowRequest{ SpaceID: "***", StreamName: "***", StartTime: "1658486583", EndTime: "1658486583", Data: "BindWidth", } res, _, err := aiot.DefaultInstance.GetDataProjectWithBindWidthAndFlow(req)
示例:
res, _, err := aiot.DefautltInstance.GetTotalData(time string) //1658486583
示例:
get := &aiot.GetPushStreamCntRequest{ SpaceID: "***", StartTime: "1658486583", EndTime: "1658486583", } res, _, err := aiot.DefaultInstance.GetPushStreamCnt(get)
示例:
start := &aiot.StartVoiceTalkRequest{ SpaceID: "***", DeviceNSID: "***", UseTcp: true, } res, _, err := aiot.DefaultInstance.StartVoiceTalk(start)
示例:
stop := &aiot.StopVoiceTalkRequestRequest{ SpaceID: "***", DeviceNSID: "***", } res, _, err := aiot.DefaultInstance.StopVoiceTalk(stop)
示例:
list := &aiot.SlowLiveRequest{ PageSize: 1, PageNumber: 1, } res, _, err := aiot.DefaultInstance.ListSlowLive(list)
示例:
arg := &aiot.CreateSlowLiveRequest{ MergingMode: "单屏", Name: fmt.Sprintf("e2e_test"), OutputEncoding: "H264", OutputFrameRate: 25, OutputResolution: "540*960", RelatedSpaces: []string{"***"}, } res, _, err := aiot.DefaultInstance.CreateSlowLive(create)
示例:
update := &aiot.UpdateSlowLiveRequest{ LiveStreamID: "***", ID: "***", AccountID: "***", Name: "new_name", } res, _, err := aiot.DefaultInstance.UpdateSlowLive(update)
示例:
//启动慢直播 res, _, err := aiot.DefaultInstance.StartSlowLive(slowLiveID string) //停止慢直播 res, _, err := aiot.DefaultInstance.StopSlowLive(slowLiveID string)
示例:
res, _, err := aiot.DefaultInstance.DeleteSlowLive(slowLiveID string)