4. 开始使用
4.1 导入依赖模块
Copied!
import (
"fmt"
"os"
"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/v2"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/tree/master/services/live/model"
"net/http"
)
4.2 初始化认证信息
Copied!
ak := os.Getenv("HUAWEICLOUD_SDK_AK")
sk := os.Getenv("HUAWEICLOUD_SDK_SK")
func GetCredential(ak, sk) basic.Credentials {
return basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
Build()
}
相关参数说明如下所示:
- ak:华为云账号Access Key。
- sk:华为云账号Secret Access Key 。
4.3初始化直播服务的客户端
Copied!
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 配置请求参数
以获取实时在线人数接口为例:
Copied!
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 发送请求
以获取实时在线人数接口为例:
Copied!
response, err := client.ListLiveStreamsOnline(request)
##5. SDK demo代码解析
5.1 查询播放带宽趋势接口
demo请见statisticalAnalyzeDemo.ListBandwidthDetail()方法
5.1.1 构造请求参数
Copied!
app := "live"
interval := model.GetListBandwidthDetailRequestIntervalEnum().E_300
request := &model.ListBandwidthDetailRequest{
PlayDomains: []string{"play.example.huawei.com"},
App: &app,
Isp: &[]string{"CMCC"},
Interval: &interval,
}
5.1.2 发送请求
Copied!
response, err := client.ListBandwidthDetail(request)
5.1.3 接口及参数说明
请见 查询播放带宽趋势接口
5.2 查询播放流量趋势接口
demo请见statisticalAnalyzeDemo.ListDomainTrafficDetail()方法
5.2.1 构造请求参数
Copied!
app := "live"
interval := int32(300)
request := &model.ListDomainTrafficDetailRequest{
PlayDomains: []string{"play.example.huawei.com"},
App: &app,
Isp: &[]string{"CMCC"},
Interval: &interval,
}
5.2.2 发送请求
Copied!
response, err := client.ListDomainTrafficDetail(request)
5.2.3 接口及参数说明
请见 查询播放带宽趋势接口
5.3 查询播放带宽峰值接口
demo请见statisticalAnalyzeDemo.ListDomainBandwidthPeak()方法
5.3.1 构造请求参数
Copied!
app := "live"
request := &model.ListDomainBandwidthPeakRequest{
PlayDomains: []string{"play.example.huawei.com"},
App: &app,
Isp: &[]string{"CMCC"},
}
5.3.2 发送请求
Copied!
response, err := client.ListDomainBandwidthPeak(request)
5.3.3 接口及参数说明
请见 查询播放带宽峰值接口
5.4 查询播放流量汇总接口
demo请见statisticalAnalyzeDemo.ListDomainTrafficSummary()方法
5.4.1 构造请求参数
Copied!
app := "live"
request := &model.ListDomainTrafficSummaryRequest{
PlayDomains: []string{"play.example.huawei.com"},
App: &app,
Isp: &[]string{"CMCC"},
}
5.4.2 发送请求
Copied!
response, err := client.ListDomainTrafficSummary(request)
5.4.3 接口及参数说明
请见 查询播放流量汇总接口
5.5 查询观众趋势接口
demo请见statisticalAnalyzeDemo.listUsersOfStream()方法
5.5.1 构造请求参数
Copied!
app := "live"
interval := model.GetListUsersOfStreamRequestIntervalEnum().E_300
request := &model.ListUsersOfStreamRequest{
PlayDomain: "play.example.huawei.com",
App: &app,
Isp: &[]string{"CMCC"},
Interval: &interval,
}
5.5.2 发送请求
Copied!
response, err := client.ListUsersOfStream(request)
5.5.3 接口及参数说明
请见 查询观众趋势接口
5.6 查询直播拉流HTTP状态码接口
demo请见statisticalAnalyzeDemo.ListQueryHttpCode()方法
5.6.1 构造请求参数
Copied!
request := &model.ListQueryHttpCodeRequest{
PlayDomains: []string{"play.example.huawei.com"},
Code: &[]string{"200"},
}
5.6.2 发送请求
Copied!
response, err := client.ListQueryHttpCode(request)
5.6.3 接口及参数说明
请见 查询直播拉流HTTP状态码接口
5.7 查询转码用量接口
demo请见statisticalAnalyzeDemo.ListTranscodeData()方法
5.7.1 构造请求参数
Copied!
publishDomain := "publish.example.huawei.com"
starTime := "2020-08-18T07:20:40Z"
endTime := "2020-08-18T10:20:40Z"
request := &model.ListTranscodeDataRequest{
PublishDomain: &publishDomain,
StartTime: &starTime,
EndTime: &endTime,
}
5.7.2 发送请求
Copied!
response, err := client.ListTranscodeData(request)
5.7.3 接口及参数说明
请见 查询转码用量接口
5.8 查询录制用量接口
demo请见statisticalAnalyzeDemo.ListRecordData()方法
5.8.1 构造请求参数
Copied!
starTime := "2020-08-18T07:20:40Z"
endTime := "2020-08-18T10:20:40Z"
request := &model.ListRecordDataRequest{
StartTime: &starTime,
EndTime: &endTime,
}
5.8.2 发送请求
Copied!
response, err := client.ListRecordData(request)
5.8.3 接口及参数说明
请见 查询录制用量接口
5.9 查询截图用量接口
demo请见statisticalAnalyzeDemo.ListSnapshotData()方法
5.9.1 构造请求参数
Copied!
publishDomain := "publish.example.huawei.com"
starTime := "2020-08-18T07:20:40Z"
endTime := "2020-08-18T10:20:40Z"
request := &model.ListSnapshotDataRequest{
PublishDomain: &publishDomain,
StartTime: &starTime,
EndTime: &endTime,
}
5.9.2 发送请求
Copied!
response, err := client.ListSnapshotData(request)
5.9.3 接口及参数说明
请见 查询截图用量接口
5.10 查询上行带宽数据接口
demo请见statisticalAnalyzeDemo.ShowUpBandwidth()方法
5.10.1 构造请求参数
Copied!
publishDomain := "publish.example.huawei.com"
starTime := "2020-08-18T07:20:40Z"
endTime := "2020-08-18T10:20:40Z"
request := &model.ShowUpBandwidthRequest{
PublishDomains: []string {publishDomain},
StartTime: &starTime,
EndTime: &endTime,
}
5.10.2 发送请求
Copied!
response, err := client.ShowUpBandwidth(request)
5.10.3 接口及参数说明
请见 查询上行带宽数据接口
5.11 查询域名维度推流路数接口
demo请见statisticalAnalyzeDemo.ShowStreamCount()方法
5.11.1 构造请求参数
Copied!
publishDomain := "publish.example.huawei.com"
starTime := "2020-08-18T07:20:40Z"
endTime := "2020-08-18T10:20:40Z"
request := &model.ShowStreamCountRequest{
PublishDomains: []string {publishDomain},
StartTime: &starTime,
EndTime: &endTime,
}
5.11.2 发送请求
Copied!
response, err := client.ShowStreamCount(request)
5.11.3 接口及参数说明
请见 查询域名维度推流路数接口
5.12 查询历史推流列表接口
demo请见statisticalAnalyzeDemo.ListHistoryStreams()方法
5.12.1 构造请求参数
Copied!
app := "live"
limit := int32(10)
offset := int32(0)
request := &model.ListHistoryStreamsRequest{
Domain: "publish.example.huawei.com",
App: &app,
Limit: &limit,
Offset: &offset,
}
5.12.2 发送请求
Copied!
response, err := client.ListHistoryStreams(request)
5.12.3 接口及参数说明
请见 查询历史推流列表接口
5.13 查询播放画像信息接口
demo请见statisticalAnalyzeDemo.ShowStreamPortrait()方法
5.13.1 构造请求参数
Copied!
request := &model.ShowStreamPortraitRequest{
PlayDomain: "play.example.huawei.com",
Time: "20200904",
}
5.13.2 发送请求
Copied!
response, err := client.ShowStreamPortrait(request)
5.13.3 接口及参数说明
请见 查询播放画像信息接口
直播服务数据统计分析场景示例(Go版本)
1. 简介
华为云提供了直播服务端SDK,您可以直接集成服务端SDK来调用直播的相关API,从而实现对直播服务的快速操作。该示例展示了如何通过Go版SDK进行数据统计分析。
2. 开发前准备
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" "os" "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/v2" "github.com/huaweicloud/huaweicloud-sdk-go-v3/tree/master/services/live/model" "net/http" )
4.2 初始化认证信息
// 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; // 本示例以ak和sk保存在环境变量中来实现身份验证为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。 ak := os.Getenv("HUAWEICLOUD_SDK_AK") sk := os.Getenv("HUAWEICLOUD_SDK_SK") func GetCredential(ak, sk) basic.Credentials { // 初始化认证信息 return basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() }
相关参数说明如下所示:
4.3初始化直播服务的客户端
func GetClient(auth basic.Credentials, region *region.Region) *live.LiveClient { return live.NewLiveClient( live.LiveClientBuilder(). WithRegion(region). WithCredential(auth). Build()) }
相关参数说明如下所示:
service region: 服务所在区域,当前支持北京一和北京四
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 发送请求
以获取实时在线人数接口为例:
##5. SDK demo代码解析
5.1 查询播放带宽趋势接口
demo请见statisticalAnalyzeDemo.ListBandwidthDetail()方法
5.1.1 构造请求参数
app := "live" interval := model.GetListBandwidthDetailRequestIntervalEnum().E_300 request := &model.ListBandwidthDetailRequest{ PlayDomains: []string{"play.example.huawei.com"}, App: &app, Isp: &[]string{"CMCC"}, Interval: &interval, }
5.1.2 发送请求
5.1.3 接口及参数说明
请见 查询播放带宽趋势接口
5.2 查询播放流量趋势接口
demo请见statisticalAnalyzeDemo.ListDomainTrafficDetail()方法
5.2.1 构造请求参数
app := "live" interval := int32(300) request := &model.ListDomainTrafficDetailRequest{ PlayDomains: []string{"play.example.huawei.com"}, App: &app, Isp: &[]string{"CMCC"}, Interval: &interval, }
5.2.2 发送请求
5.2.3 接口及参数说明
请见 查询播放带宽趋势接口
5.3 查询播放带宽峰值接口
demo请见statisticalAnalyzeDemo.ListDomainBandwidthPeak()方法
5.3.1 构造请求参数
app := "live" request := &model.ListDomainBandwidthPeakRequest{ PlayDomains: []string{"play.example.huawei.com"}, App: &app, Isp: &[]string{"CMCC"}, }
5.3.2 发送请求
5.3.3 接口及参数说明
请见 查询播放带宽峰值接口
5.4 查询播放流量汇总接口
demo请见statisticalAnalyzeDemo.ListDomainTrafficSummary()方法
5.4.1 构造请求参数
app := "live" request := &model.ListDomainTrafficSummaryRequest{ PlayDomains: []string{"play.example.huawei.com"}, App: &app, Isp: &[]string{"CMCC"}, }
5.4.2 发送请求
5.4.3 接口及参数说明
请见 查询播放流量汇总接口
5.5 查询观众趋势接口
demo请见statisticalAnalyzeDemo.listUsersOfStream()方法
5.5.1 构造请求参数
app := "live" interval := model.GetListUsersOfStreamRequestIntervalEnum().E_300 request := &model.ListUsersOfStreamRequest{ PlayDomain: "play.example.huawei.com", App: &app, Isp: &[]string{"CMCC"}, Interval: &interval, }
5.5.2 发送请求
5.5.3 接口及参数说明
请见 查询观众趋势接口
5.6 查询直播拉流HTTP状态码接口
demo请见statisticalAnalyzeDemo.ListQueryHttpCode()方法
5.6.1 构造请求参数
request := &model.ListQueryHttpCodeRequest{ PlayDomains: []string{"play.example.huawei.com"}, Code: &[]string{"200"}, }
5.6.2 发送请求
5.6.3 接口及参数说明
请见 查询直播拉流HTTP状态码接口
5.7 查询转码用量接口
demo请见statisticalAnalyzeDemo.ListTranscodeData()方法
5.7.1 构造请求参数
publishDomain := "publish.example.huawei.com" starTime := "2020-08-18T07:20:40Z" endTime := "2020-08-18T10:20:40Z" request := &model.ListTranscodeDataRequest{ PublishDomain: &publishDomain, StartTime: &starTime, EndTime: &endTime, }
5.7.2 发送请求
5.7.3 接口及参数说明
请见 查询转码用量接口
5.8 查询录制用量接口
demo请见statisticalAnalyzeDemo.ListRecordData()方法
5.8.1 构造请求参数
starTime := "2020-08-18T07:20:40Z" endTime := "2020-08-18T10:20:40Z" request := &model.ListRecordDataRequest{ StartTime: &starTime, EndTime: &endTime, }
5.8.2 发送请求
5.8.3 接口及参数说明
请见 查询录制用量接口
5.9 查询截图用量接口
demo请见statisticalAnalyzeDemo.ListSnapshotData()方法
5.9.1 构造请求参数
publishDomain := "publish.example.huawei.com" starTime := "2020-08-18T07:20:40Z" endTime := "2020-08-18T10:20:40Z" request := &model.ListSnapshotDataRequest{ PublishDomain: &publishDomain, StartTime: &starTime, EndTime: &endTime, }
5.9.2 发送请求
5.9.3 接口及参数说明
请见 查询截图用量接口
5.10 查询上行带宽数据接口
demo请见statisticalAnalyzeDemo.ShowUpBandwidth()方法
5.10.1 构造请求参数
publishDomain := "publish.example.huawei.com" starTime := "2020-08-18T07:20:40Z" endTime := "2020-08-18T10:20:40Z" request := &model.ShowUpBandwidthRequest{ PublishDomains: []string {publishDomain}, StartTime: &starTime, EndTime: &endTime, }
5.10.2 发送请求
5.10.3 接口及参数说明
请见 查询上行带宽数据接口
5.11 查询域名维度推流路数接口
demo请见statisticalAnalyzeDemo.ShowStreamCount()方法
5.11.1 构造请求参数
publishDomain := "publish.example.huawei.com" starTime := "2020-08-18T07:20:40Z" endTime := "2020-08-18T10:20:40Z" request := &model.ShowStreamCountRequest{ PublishDomains: []string {publishDomain}, StartTime: &starTime, EndTime: &endTime, }
5.11.2 发送请求
5.11.3 接口及参数说明
请见 查询域名维度推流路数接口
5.12 查询历史推流列表接口
demo请见statisticalAnalyzeDemo.ListHistoryStreams()方法
5.12.1 构造请求参数
app := "live" limit := int32(10) offset := int32(0) request := &model.ListHistoryStreamsRequest{ Domain: "publish.example.huawei.com", App: &app, Limit: &limit, Offset: &offset, }
5.12.2 发送请求
5.12.3 接口及参数说明
请见 查询历史推流列表接口
5.13 查询播放画像信息接口
demo请见statisticalAnalyzeDemo.ShowStreamPortrait()方法
5.13.1 构造请求参数
request := &model.ShowStreamPortraitRequest{ PlayDomain: "play.example.huawei.com", Time: "20200904", }
5.13.2 发送请求
5.13.3 接口及参数说明
请见 查询播放画像信息接口
6. FAQ
暂无
7. 参考
更多信息请参考 直播服务文档
8. 修订记录