直播服务流管理
引导式阅读
Python
直播服务流管理
作者
C***
上架时间
2023-11-14 03:27:30

直播服务流管理场景示例(Go版本)

1. 简介

华为云提供了直播服务端SDK,您可以直接集成服务端SDK来调用直播的相关API,从而实现对直播服务的快速操作。该示例展示了如何通过Go版SDK对直播流进行管理。

2. 开发前准备

  • 已注册华为云,并完成实名认证。
  • 具备已备案的域名用于直播推流和播放,并在视频直播控制台添加推流和播放域名,且已完成域名关联。
  • 具体开发环境 ,支持go 1.14及以上版本。
  • 已获取华为云账号对应的Access Key(AK)和Secret Access Key(SK)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的AK/SK。具体请参见访问密钥。
  • 已获取直播服务对应区域的项目ID,请在华为云控制台“我的凭证 > API凭证”页面上查看项目ID。具体请参见API凭证。

3. 安装SDK

视频直播服务端Go SDK支持go 1.14及以上版本。执行go version检查当前Go的版本信息。

使用go get安装华为云Go SDK,执行如下命令安装华为云Go SDK库以及相关依赖库,具体的SDK版本号请参见SDK开发中心

# 安装华为云Go库 go get github.com/huaweicloud/huaweicloud-sdk-go-v3 # 安装依赖 go get github.com/json-iterator/go

4. 开始使用

4.1 导入依赖模块

import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/config" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/httphandler" live "github.com/huaweicloud/huaweicloud-sdk-go-v3/tree/master/services/live/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/tree/master/services/live/model" "net/http" )

4.2 初始化认证信息

func GetCredential(ak, sk string) basic.Credentials { // 初始化认证信息 return basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() }

相关参数说明如下所示:

  • ak:华为云账号Access Key。
  • sk:华为云账号Secret Access Key 。

4.3初始化直播服务的客户端

func GetClient(auth basic.Credentials, region *region.Region) *live.LiveClient { return live.NewLiveClient( live.LiveClientBuilder(). WithRegion(region). WithCredential(auth). Build()) }

相关参数说明如下所示:

service region: 服务所在区域,当前支持北京一和北京四

  • CN_NORTH_1 北京一
  • CN_NORTH_4 北京四

4.4 配置请求参数

以获取实时在线人数接口为例:

app := "live" offset := int32(1) limit := int32(10) stream := "streamTest" request := &model.ListLiveStreamsOnlineRequest { PublishDomain: "publish.example.huawei.com", App: &app, Offset: &offset, Limit: &limit, Stream: &stream, }

相关demo说明见 5. SDK demo代码解析

4.5 发送请求

以获取实时在线人数接口为例:

response, err := client.ListLiveStreamsOnline(request)

##5. SDK demo代码解析

5.1 查询直播中的流信息

demo请见streamsUsageDemo.ListLiveStreamsOnline()方法

5.1.1 构造请求参数

app := "live" offset := int32(1) limit := int32(10) stream := "streamTest" request := &model.ListLiveStreamsOnlineRequest { PublishDomain: "publish.example.huawei.com", App: &app, Offset: &offset, Limit: &limit, Stream: &stream, }

5.1.2 发送请求

response, err := client.ListLiveStreamsOnline(request)

5.1.3 接口及参数说明

请见 查询直播中的流信息

5.2 禁止直播推流

demo请见streamForbiddenDemo.CreateStreamForbidden()方法

5.2.1 构造请求参数

resumeTime := sdktime.SdkTime(time.Now()) requestBody := &model.StreamForbiddenSetting { Domain: "publish.example.huawei.com", AppName: "live", StreamName: "test_001", ResumeTime: &resumeTime, } request := &model.CreateStreamForbiddenRequest { Body: requestBody, }

5.2.2 发送请求

response, err := client.CreateStreamForbidden(request)

5.2.3 接口及参数说明

请见 禁止直播推流

5.3 禁推恢复

demo请见streamForbiddenDemo.DeleteStreamForbidden()方法

5.3.1 构造请求参数

request := &model.DeleteStreamForbiddenRequest{ Domain: "publish.example.huawei.com", AppName: "live", StreamName: "streamTest", }

5.3.2 发送请求

response, err := client.DeleteStreamForbidden(request)

5.3.3 接口及参数说明

请见 禁推恢复

5.4 查询禁止直播推流列表

demo请见StreamForbiddenDemo.listStreamForbidden()方法

5.4.1 构造请求参数

appName := "templateName_001" page := int32(1) size := int32(10) request := &model.ListStreamForbiddenRequest{ Domain: "publish.example.huawei.com", AppName: &appName, Page: &page, Size: &size, }

5.4.2 发送请求

response, err := client.ListStreamForbidden(request)

5.4.3 接口及参数说明

请见 禁推恢复

5.5 修改禁推属性

demo请见StreamForbiddenDemo.UpdateStreamForbidden()方法

5.5.1 构造请求参数

resumeTime := sdktime.SdkTime(time.Now()) requestBody := &model.StreamForbiddenSetting { Domain: "publish.example.huawei.com", AppName: "live", StreamName: "test_001", ResumeTime: &resumeTime, } request := &model.UpdateStreamForbiddenRequest { Body: requestBody, }

5.5.2 发送请求

response, err := client.UpdateStreamForbidden(request)

5.5.3 接口及参数说明

请见 修改禁推属性

6. FAQ

暂无

7. 参考

更多信息请参考 直播服务文档

8. 修订记录

发布日期 文档版本 修订说明
2020-02-05 1.0 文档首次发布