human: 如何处理七牛云的直播云服务端

gpt: [直播云](https://developer.qiniu.com/pili) > SDK 下载 > 服务端

#  服务端

最近更新时间: 2021-11-02 18:14:36

直播云相关功能已集成进七牛综合SDK，建议升级，原直播服务端SDK文档可见 [直播云服务端SDK历史版本
__](https://developer.qiniu.com/pili/1220/server-sdk)。

此 SDK 适用于 Go 1.10.0 及以上版本。此SDK可以帮助您快速接入七牛云直播服务，主要功能有：

  1. 获取直播地址与签算结果
     * 获取推流地址，包括RTMP推流地址与SRT推流地址
     * 获取播放地址，包括RTMP、HLS和HDL(HTTP-FLV)播放地址
     * 直播推流鉴权与播放时间戳防盗链签算方法
  2. 直播空间管理
     * 查询直播空间列表
     * 查询直播空间信息
     * 修改直播空间推流鉴权配置
     * 修改直播空间hls低延迟配置
     * 修改直播空间存储配置
     * 修改直播空间封面配置
  3. 域名管理
     * 查询域名列表
     * 查询域名信息
     * 绑定直播域名
     * 解绑直播域名
     * 配置点播域名
     * 修改域名证书配置
     * 更新域名改写规则
  4. 直播流管理
     * 查询直播流列表
     * 查询直播流信息
     * 禁用直播流
     * 查询在线流信息
     * 批量查询在线流信息
     * 查询直播流推流记录
     * 录制直播回放
     * 保存直播截图
     * 修改直播流转码配置
  5. 直播统计数据查询
     * 查询直播上行流量
     * 查询直播下行流量
     * 查询直播转码使用量
     * 查询直播鉴黄使用量
     * 查询导播台使用量
     * 查询Pub转推服务使用量

# 开源

  * [Go SDK 项目地址 __](https://github.com/qiniu/go-sdk)
  * [Go SDK 发布地址 __](https://github.com/qiniu/go-sdk/releases)

# 安装

推荐使用 go mod , `github.com/qiniu/go-sdk/v7` ，如 `require github.com/qiniu/go-
sdk/v7 v7.11.0`

# 鉴权

Go SDK
的所有的功能，都需要合法的授权。授权凭证的签算需要七牛账号下的一对有效的`AccessKey`和`SecretKey`，这对密钥可以通过如下步骤获得：

  1. 登录 [七牛开发者平台 __](https://portal.qiniu.com/)。
  2. 进入七牛 [个人中心/密钥管理 __](https://portal.qiniu.com/user/key)页面。
  3. 在 密钥管理 页面，获取一对AccessKey/SecretKey。

# 直播地址与签算方法

## RTMP推流地址

获取RTMP推流地址

### 调用方法

    
    
    func RTMPPublishURL(hub, domain, streamTitle string) string
    

### 参数说明

RTMPPublishURL 函数参数说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
hub | string | 是 | 直播空间名  
domain | string | 是 | 推流域名  
streamTitle | string | 是 | 直播流名  
  
### 示例

    
    
    rtmpPublishURL := RTMPPublishURL("testHub","testDomain","testStream")
    

## SRT推流地址

获取SRT推流地址

### 调用方法

    
    
    func SRTPublishURL(hub, domain, streamTitle string) string
    

### 参数说明

SRTPublishURL 函数参数说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
hub | string | 是 | 直播空间名  
domain | string | 是 | 推流域名  
streamTitle | string | 是 | 直播流名  
  
### 示例

    
    
    srtPublishUrl := SRTPublishURL("testHub", "testDomain", "testStream")
    

## RTMP播放地址

获取RTMP播放地址

### 调用方法

    
    
    func RTMPPlayURL(hub, domain, streamTitle string) string
    

### 参数说明

RTMPPlayURL 函数参数说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
hub | string | 是 | 直播空间名  
domain | string | 是 | RTMP 播放域名  
streamTitle | string | 是 | 直播流名  
  
### 示例

    
    
    rtmpPlayURL := RTMPPlayURL("testHub", "testDomain", "testStream")
    

## HLS播放地址

获取HLS播放地址

### 调用方法

    
    
    func HLSPlayURL(hub, domain, streamTitle string) string
    

### 参数说明

HLSPlayURL 函数参数说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
hub | string | 是 | 直播空间名  
domain | string | 是 | HLS 播放域名  
streamTitle | string | 是 | 直播流名  
  
### 示例

    
    
    hlsPlayURL := HLSPlayURL("testHub", "testDomain", "testStream")
    

## HDL(HTTP-FLV)播放地址

获取HDL(HTTP-FLV)播放地址

### 调用方法

    
    
    func HDLPlayURL(hub, domain, streamTitle string) string
    

### 参数说明

HDLPlayURL 函数参数说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
hub | string | 是 | 直播空间名  
domain | string | 是 | HDL 播放域名  
streamTitle | string | 是 | 直播流名  
  
### 示例

    
    
    flvPlayURL := HDLPlayURL("testHub", "testDomain", "testStream")
    

## 推流 URL 签算（直播鉴权）

获取推流地址签算结果

### 调用方法

    
    
    func SignPublishURL(publishURL string, args SignPublishURLArgs) (string, error)
    

### 参数说明

SignPublishURL 函数参数说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
publishURL | string | 是 | 推流URL  
args | SignPublishURLArgs | 是 | 推流URL生成签算参数  
├─ SecurityType | string | 是 | 鉴权类型，支持鉴权规格为:  
1、static: 静态鉴权；  
2、expiry: 限时鉴权；  
3、expiry_sk: 限时鉴权SK；  
4、dynamic: 动态鉴权  
├─ PublishKey | string | 否 | 推流鉴权秘钥，静态鉴权（static）、限时鉴权（expiry）、动态鉴权（dynamic） 类型必要参数  
├─ ExpireAt | int64 | 否 | 签算URL过期时间，单位：秒。限时鉴权（expiry）、限时鉴权SK（expiry_sk） 类型必要参数  
├─ Nonce | int | 否 | 随机数，要求每次推流请求的nonce值需要大于上一次推流请求的nonce值。动态鉴权（dynamic） 鉴权类型必要参数  
├─ AccessKey | string | 否 | 访问密钥，限时鉴权SK（expiry_sk） 类型必要参数  
├─ SecretKey | string | 否 | 访问密钥，限时鉴权SK（expiry_sk） 类型必要参数  
  
### 示例

    
    
    // manager 实例
    	manager := NewManager(ManagerConfig{
    		AppName:       "live",
    		APIHost:       APIHost,
    		APIHTTPScheme: APIHTTPSScheme,
    		AccessKey:     "yourAccessKey",
    		SecretKey:     "yourSecretKey",
    		Transport:     http.DefaultTransport,
    	})
    
    	yourHub := "testHub"
    	yourPublishKey := "12345678" // 直播空间的推流鉴权密钥
    
    	hubInfo, err := manager.GetHubInfo(context.Background(), GetHubInfoRequest{Hub: yourHub})
    	if err != nil {
    		return err
    	}
    	rtmpPublishURL := RTMPPublishURL(yourHub, "testDomain", "testStream")
    
    	// 十分钟后过期
    	expireAt := time.Now().Add(10 * time.Minute).Unix()
    	// 此处假设直播空间推流鉴权方式为限时鉴权
    	signedRTMPPublishURL, err := SignPublishURL(rtmpPublishURL, SignPublishURLArgs{
    		SecurityType: hubInfo.PublishSecurity,
    		PublishKey:   yourPublishKey,
    		ExpireAt:     expireAt,
    		Nonce:        0,  // 限时鉴权规格下，此参数可以忽略
    		AccessKey:    "", // 非限时鉴权SK规格，此参数可以忽略
    		SecretKey:    "", // 非限时鉴权SK规格，此参数可以忽略
    	})
    	if err != nil {
    		return err
    	}
    
    	// 此时可以使用签算后的 signedRTMPPublishURL 进行推流
    

## 播放 URL 签算（时间戳防盗链）

获取播放地址签算结果

### 调用方法

    
    
    func SignPlayURL(playURL string, args SignPlayURLArgs) (string, error)
    

### 参数说明

SignPlayURL 函数参数说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
playURL | string | 是 | 播放URL  
args | SignPlayURLArgs | 是 | 播放URL签算参数  
├─ SecurityType | string | 是 | 鉴权类型，支持鉴权类型为：  
1、tsStartMD5 时间戳防盗链开始时间限制  
2、tsExpireMD5 时间戳防盗链结束时间限制  
├─ Key | string | 是 | 密钥  
├─ Timestamp | int64 | 是 | 时间戳，单位：秒  
鉴权类型为 tsStartMD5 时，表示鉴权开始时间  
鉴权类型为 tsExpireMD5 时，表示鉴权结束时间  
├─ Rule | string | 是 | 签名规则，支持魔法变量的规则，最终签算结果为所有变量的md5。魔法变量如下：  
1、 $(key): 密钥  
2、 $(path): URL 中的 path 部分  
3、$(streamKey): URL 中的 hub/stream 部分  
4、 $(streamTitle): URL 中的 stream 部分  
5、 $(path_): URL 中的 path 部分， 表示 path 层级  
6、 $(_): URL 中的 query 字段，举例: key1=val，魔法变量中使用 $(_key1) 表示 val  
├─ TsPart | string | 是 | 时间戳字段，URL 中表示时间戳的字段名  
├─ TsBase | int | 否 | 时间戳进制，可选进制格式为 2-36，即 2 进制到 36 进制，默认使用 16 进制  
├─ SignPart | string | 是 | 签名字段，URL 中表示 token 的字段名  
  
### 示例

    
    
    // manager 实例
    	manager := NewManager(ManagerConfig{
    		AppName:       "live",
    		APIHost:       APIHost,
    		APIHTTPScheme: APIHTTPSScheme,
    		AccessKey:     "yourAccessKey",
    		SecretKey:     "yourSecretKey",
    		Transport:     http.DefaultTransport,
    	})
    
    	yourHub := "testHub"
    	rtmpPlayDomain := "testDomain"
    
    	domainInfo, err := manager.GetDomainInfo(context.Background(), GetDomainInfoRequest{
    		Hub:    yourHub,
    		Domain: rtmpPlayDomain,
    	})
    	if err != nil {
    		return err
    	}
    
    	rtmpPlayURL := RTMPPlayURL(yourHub, rtmpPlayDomain, "testStream")
    
    	// 假设域名播放鉴权类型为 tsStartMD5
    	signedRTMPPlayURL, err := SignPlayURL(rtmpPlayURL, SignPlayURLArgs{
    		SecurityType: domainInfo.PlaySecurity.Type,
    		Key:          domainInfo.PlaySecurity.Key1,
    		Timestamp:    time.Now().Unix(),
    		Rule:         domainInfo.PlaySecurity.Rule,
    		TsPart:       domainInfo.PlaySecurity.TsPart,
    		TsBase:       domainInfo.PlaySecurity.TsBase,
    		SignPart:     domainInfo.PlaySecurity.SignPart,
    	})
    	if err != nil {
    		return err
    	}
    
    	// 此时可以使用签算后的 signedRTMPPlayURL 进行播放
    

# 直播空间管理

## 查询直播空间列表

查询您所有的直播空间，结果以列表形式返回

### 调用方法

    
    
    func (m *Manager) GetHubList(ctx context.Context) (*GetHubListResponse, error)
    

### 参数说明

GetHubListResponse 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Items | []object | 否 | 直播空间列表  
├─ Name | string | 否 | 直播空间名  
  
### 示例

    
    
    hubs, err := manager.GetHubList(ctx)
    

## 查询直播空间信息

查询目标直播空间信息，包括直播空间基本信息、绑定的域名列表、存储空间信息和直播空间配置信息

### 调用方法

    
    
    func (m *Manager) GetHubInfo(ctx context.Context, req GetHubInfoRequest) (*GetHubInfoResponse, error)
    

### 参数说明

GetHubInfoRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
  
GetHubInfoResponse 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Name | string | 否 | 直播空间名  
CreatedAt | int64 | 否 | 创建时间  
UpdatedAt | int64 | 否 | 更新时间  
Domains | []object | 否 | 直播空间下的域名列表  
├─ Type | string | 否 | 域名类型  
├─ Domain | string | 否 | 域名  
├─ Cname | string | 否 | CNAME  
DefaultDomains | []object | 否 | 直播空间默认域名  
├─ Type | string | 否 | 域名类型，包括：  
publishRtmp：推流域名  
liveRtmp：RTMP播放域名  
liveHls：HLS播放域名  
liveHdl：FLV播放域名  
├─ Domain | string | 否 | 域名  
StorageBucket | string | 否 | 与直播空间绑定的存储空间  
LiveDataExpireDays | int64 | 否 | 存储过期时间，单位：天  
PublishSecurity | string | 否 | 推流鉴权方式  
Nrop | object | 否 | 鉴黄配置信息  
├─ Enable | bool | 否 | 是否开启直播空间级别鉴黄功能  
├─ Interval | int | 否 | 截帧间隔，每个流隔多久进行截帧并鉴黄，单位：秒  
├─ NotifyURL | string | 否 | 回调 URL  
├─NotifyRate | float64 | 否 | 通知阈值，鉴黄结果阈值表示AI模型判断当前直播画面有多大的概率涉黄，当鉴黄结果阈值大于或等于通知阈值时，将发送回调信息到回调URL  
PassiveCodecProfiles | []string | 否 | 被动转码配置，形式如：720p  
Converts | []string | 否 | 主动转码配置，形式如：720p  
HlsPlus | bool | 否 | 是否开启 hls 低延迟  
VodDomain | string | 否 | 点播域名  
AccessLog | object | 否 | 直播日志保存信息  
├─SaveBucket | string | 否 | 存储空间  
├─ExpireDays | int | 否 | 过期天数  
SnapshotInterval | int | 否 | 直播封面的截图间隔，单位：秒  
  
### 示例

    
    
    hub, err := manager.GetHubInfo(ctx, pili.GetHubInfoRequest{Hub: "yourHub"})
    

## 修改直播空间推流鉴权配置

修改目标直播空间的推流鉴权方式和密钥

### 调用方法

    
    
    func (m *Manager) HubSecurity(ctx context.Context, req HubSecurityRequest) error
    

### 参数说明

HubSecurityRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
PublishSecurity | string | 是 | 鉴权方式，可选推流鉴权类型为： expiry: 限时鉴权、expiry_sk: 限时鉴权SK  
PublishKey | string | 是 | 密钥  
  
### 示例

    
    
    err := manager.HubSecurity(ctx, pili.HubSecurityRequest)
    

## 修改直播空间hls低延迟配置

对目标直播空间下的直播流开启或关闭hls低延迟

### 调用方法

    
    
    func (m *Manager) HubHlsplus(ctx context.Context, req HubHlsplusRequest) error
    

### 参数说明

HubHlsplusRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
HlsPlus | bool | 是 | 是否开启 hls 低延迟  
  
### 示例

    
    
    err := manager.HubHlsplus(ctx, pili.HubHlsplusRequest{Hub:"yourHub", HlsPlus: true,})
    

## 修改直播空间存储配置

修改目标直播空间绑定的存储空间，以及直播存储保存时间，绑定的存储空间需要预先在七牛云存储中创建

### 调用方法

    
    
    func (m *Manager) HubPersistence(ctx context.Context, req HubPersistenceRequest) error
    

### 参数说明

HubPersistenceRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
StorageBucket | string | 是 | 存储空间，与直播空间绑定的存储空间需要满足以下两个条件：  
\- 存储区域为华北  
\- 存储空间的访问控制设置为公开  
LiveDataExpireDays | uint | 是 | 存储过期时间，单位：天，取值范围为60 ~ 1095  
根据国家相关规定，电商直播客户的直播存储时长需要为1095天  
  
### 示例

    
    
    err := manager.HubPersistence(ctx, HubPersistenceRequest{Hub:"testHub", StorageBucket:"testBucket", LiveDataExpireDays: 60,})
    

## 修改直播空间封面配置

设置目标直播空间下的直播流是否使用直播封面，以及修改封面更新时间间隔

### 调用方法

    
    
    func (m *Manager) HubSnapshot(ctx context.Context, req HubSnapshotRequest) error
    

### 参数说明

HubSnapshotRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
SnapshotInterval | int | 是 | 间隔时间，单位：秒，设置为-1时为不开启封面  
  
### 示例

    
    
    err := manager.HubSnapshot(ctx, HubSnapshotRequest{Hub:"testHub", SnapshotInterval: 30,})
    

# 域名管理

## 查询域名列表

返回目标直播空间下的所有直播域名，以列表形式返回

### 调用方法

    
    
    func (m *Manager) GetDomainsList(ctx context.Context, req GetDomainsListRequest) (*GetDomainsListResponse, error)
    

### 参数说明

GetDomainsListRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
  
GetDomainsListResponse 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Domains | []object | 否 | 域名列表  
├─ Type | string | 否 | 域名类型，包括：  
publishRtmp：推流域名  
liveRtmp：RTMP播放域名  
liveHls：HLS播放域名  
liveHdl：FLV播放域名  
├─ Domain | string | 否 | 域名  
├─ Cname | string | 否 | CNAME  
├─CertEnable | bool | 否 | 是否配置 SSL 证书  
├─ CertName | string | 否 | 证书名称  
  
### 示例

    
    
    list, err := manager.GetDomainsList(ctx, GetDomainsListRequest{Hub: "testHub"})
    

## 查询域名信息

查询目标直播域名基本信息和配置信息

### 调用方法

    
    
    func (m *Manager) GetDomainInfo(ctx context.Context, req GetDomainInfoRequest) (*GetDomainInfoResponse, error)
    

### 参数说明

GetDomainInfoRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Domain | string | 是 | 域名  
  
GetDomainInfoResponse 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Domain | string | 否 | 域名  
Type | string | 否 | 域名类型  
Cname | string | 否 | CNAME  
ConnectCallback | object | 否 | 开播回调配置  
├─ Type | string | 否 | 回调类型，可选回调类型为：  
留空：不开启回调功能  
GET：发送GET请求回调，请求参数携带在query中  
FORM：发送POST请求回调，请求参数携带在body中，Content-Type 为 `application/x-www-form-
urlencoded`  
JSON: 发送POST请求回调，请求参数携带在body中，Content-Type 为 `application/json`  
├─ URL | string | 否 | 回调地址,支持魔法变量  
├─ Timeout | int64 | 否 | 超时时间, 与回调地址的 HTTP 连接超时时间，单位：秒, 默认值为 2 秒，配置范围为 0~10 秒  
├─ Vars | map[string]string | 否 | 请求参数,支持魔法变量，至少需要一组请求参数，规则解析出错误的会设置成空字段  
├─RetryTimes | int | 否 | 重试次数，选范围 0~5 次  
├─RetryInterval | int | 否 | 重试间隔，可选范围 0~5 秒，单位：秒  
├─SuccessCode | int | 否 | 回调成功的 http code，为 0 表示通配  
├─ FailCode | int | 否 | 回调失败的 http code，为 0 表示通配，当 SuccessCode 不为 0 的情况下生效  
DisconnectCallback | object | 否 | 断播回调配置  
├─ Type | string | 否 | 回调类型，可选回调类型为：  
留空：不开启回调功能  
GET：发送GET请求回调，请求参数携带在query中  
FORM：发送POST请求回调，请求参数携带在body中，Content-Type 为 `application/x-www-form-
urlencoded`  
JSON：发送POST请求回调，请求参数携带在body中，Content-Type 为 `application/json`  
├─ URL | string | 否 | 回调地址,支持魔法变量  
├─ Timeout | int64 | 否 | 超时时间, 与回调地址的 HTTP 连接超时时间，单位：秒, 默认值为 2 秒，配置范围为 0~10 秒  
├─ Vars | map[string]string | 否 | 请求参数,支持魔法变量，至少需要一组请求参数，规则解析出错误的会设置成空字段  
├─RetryTimes | int | 否 | 重试次数，选范围 0~5 次  
├─RetryInterval | int | 否 | 重试间隔，可选范围 0~5 秒，单位：秒  
├─SuccessCode | int | 否 | 回调成功的 http code，为 0 表示通配  
├─ FailCode | int | 否 | 回调失败的 http code，为 0 表示通配，当 SuccessCode 不为 0 的情况下生效  
IPLimit | object | 否 | IP 访问限制  
├─ WhiteList | []string | 否 | 白名单，允许推拉流的 IP 列表（CIDR 类型），配置白名单后，黑名单列表将失效  
├─ BlackList | []string | 否 | 黑名单，限制推拉流的 IP 列表（CIDR 类型）  
PlaySecurity | object | 否 | 时间戳防盗链配置  
├─ Type | string | 否 | 防盗链类型，可选防盗链类型为：  
留空：默认类型，表示继承直播空间级别配置  
none：表示关闭鉴权  
tsStartMD5：有效时间从 `TsPart` 表示的时间戳开始，到 `Range` 秒后截止  
tsExpireMD5：有效时间从现在当前到 `TsPart` 表示的时间戳为止  
├─ Key1 | string | 否 | 主密钥  
├─ Key2 | string | 否 | 副密钥， 两个密钥将同时生效，便于线上业务替换密钥  
├─ Range | int | 否 | 有效时间，当 防盗链类型 为 `tsStartMD5` 时生效，单位：秒  
├─ Rule | string | 否 | 签名规则，支持魔法变量的规则，最终签算结果为所有变量的MD5，魔法变量如下：  
$(key)：用户定义的密钥  
$(path)：URL中的 `path` 部分  
$(streamKey)：URL中的 `hub/stream` 部分  
$(streamTitle)：URL中的 `stream` 部分  
$(_query)：下划线开头为URL中 `query` 字段  
├─ Rule2 | string | 否 | 签名规则2，两个签名规则将同时生效，便于线上业务更换签名规则  
├─ TsPart | string | 否 | 时间戳字段，URL中表示时间戳的字段名  
├─ TsBase | int | 否 | 时间戳进制，可选进制格式为 2-36，即 2 进制到 36 进制，默认使用16进制  
├─ SignPart | string | 否 | 签名字段，URL中表示token的字段名  
├─GapDuration | int | 否 | 时间误差值，针对 tsExpireMD5 生效，避免因签算方与服务器本地时间误差造成的鉴权失败  
DisconnectDelay | int64 | 否 | 断流延迟配置，单位：秒，针对直播流短时间内闪断重连的情况，不触发断流回调，避免因为短时间内频繁断流造成大量回调  
UrlRewrite | object | 否 | URL 改写规则  
├─ Rules | []object | 否 | 改写规则列表  
CertEnable | bool | 否 | 是否配置 SSL 证书  
CertName | string | 否 | 证书名称  
Disable | bool | 否 | 域名是否为禁用状态  
  
### 示例

    
    
    info, err := manager.GetDomainInfo(ctx, GetDomainInfoRequest{Hub:"testHub", Domain: "pili-publish.test.cloudvdn.com",})
    

## 绑定直播域名

添加直播域名到目标直播空间，包括推流域名与RTMP、HLS、HDL播放域名，绑定之后可以使用此域名推流或播放

### 调用方法

    
    
    func (m *Manager) BindDomain(ctx context.Context, req BindDomainRequest) error
    

### 参数说明

BindDomainRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Domain | string | 是 | 域名  
Type | string | 是 | 域名类型，可选域名类型为：  
publishRtmp：推流域名  
liveRtmp：RTMP播放域名  
liveHls：HLS播放域名  
liveHdl：FLV播放域名  
  
### 示例

    
    
    err := manager.BindDomain(ctx, BindDomainRequest{Hub:"testHub", Domain:"pili-publish.go-sdk.cloudvdn.com", Type:liveRtmp,})
    

## 解绑直播域名

将已经绑定的直播域名从目标直播空间解绑，之后无法使用此域名推流或播放

### 调用方法

    
    
    func (m *Manager) UnbindDomain(ctx context.Context, req UnbindDomainRequest) error
    

### 参数说明

UnbindDomainRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Domain | string | 是 | 域名  
  
### 示例

    
    
    err := manager.UnbindDomain(ctx, UnbindDomainRequest{Hub:"testHub", Domain:"pili-publish.go-sdk.cloudvdn.com",})
    

## 配置点播域名

点播域名用于访问直播空间对应的存储空间中的内容，例如回放、截图文件

请在相应存储空间配置好可用域名后，将其绑定到直播空间。若未正确配置点播域名，可能无法正常使用回放录制、保存截图等功能

### 调用方法

    
    
    func (m *Manager) BindVodDomain(ctx context.Context, req BindVodDomainRequest) error
    

### 参数说明

BindVodDomainRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
VodDomain | string | 是 | 点播域名  
  
### 示例

    
    
    err := manager.BindVodDomain(ctx, BindVodDomainRequest{Hub:"testHub", VodDomain:"pili-vod.test.cloudvdn.com",})
    

## 修改域名证书配置

修改域名证书配置，需要提前将证书配置到七牛 CDN 服务中，证书配置地址: https://portal.qiniu.com/certificate/ssl

配置好证书后可以获得证书名称的参数，此时可以使用获得的证书名称请求执行修改域名证书配置

### 调用方法

    
    
    func (m *Manager) SetDomainCert(ctx context.Context, req SetDomainCertRequest) error
    

### 参数说明

SetDomainCertRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Domain | string | 是 | 域名  
CertName | string | 是 | 证书名称，需要将证书配置到七牛 CDN 服务中  
  
### 示例

    
    
    err := manager.SetDomainCert(ctx, SetDomainCertRequest{Hub:"testHub", Domain:"pili-publish.gtest.cloudvdn.com", CertName:"5f1e9df7f9537d6b37000010",})
    

## 更新域名改写规则

可根据业务需求自定义推拉流URL，改写后的URL应符合七牛的直播URL规范:
`<scheme>://<domain>/<hub>/<stream>[.<ext>]?<query>`

### 调用方法

    
    
    func (m *Manager) SetDomainURLRewrite(ctx context.Context, req SetDomainURLRewriteRequest) error
    

### 参数说明

SetDomainURLRewriteRequest 结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Domain | string | 是 | 域名  
Rules | []object | 是 | URL 改写规则列表  
├─ Pattern | string | 是 | 匹配规则，针对完整URL的正则表达式，形式如：`(.+)/live/(.+)/playlist.m3u8`，括号中的内容允许在 Replacement 中使用${n}引用（n表示括号顺序）  
├─ Replace | string | 是 | 改写规则，希望得到的改写结果，形式如：`${1}/hub/${2}.m3u8`，改写后的URL应符合七牛的直播URL规范：`<scheme>://<domain>/<hub>/<stream>[<ext>]?<query>`  
  
### 示例

    
    
    req := pili.SetDomainURLRewriteRequest{
    Hub:    "testhub",
    Domain: "pili-publish.test.cloudvdn.com",
    Rules: []pili.DomainURLRewriteRule{
    {
    Pattern: "(.+)/test/(.+)",
    Replace: "${1}/test/live/${2}",
    },
    },
    }
    
    err := manager.SetDomainURLRewrite(ctx, req)
    

# 直播流管理

## 查询直播流列表

查询目标直播空间下的直播流列表，可以根据直播流在线状态和直播流名称进行筛选

### 调用方法

    
    
    func (m *Manager) GetStreamsList(ctx context.Context, req GetStreamListRequest) (*GetStreamsListResponse, error)
    

### 参数说明

GetStreamListRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Liveonly | bool | 否 | 只返回当前在线的直播流只返回当前在线的流，true 表示查询的是正在直播的流，不指定表示返回所有的流  
Prefix | string | 否 | 直播流名称前缀匹配  
Limit | int | 否 | 返回值数量限制，取值范围为0～5000  
Marker | string | 否 | 游标，从该位置开始返回  
  
GetStreamsListResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Items | []GetStreamsListResponseItem | 否 | 直播流列表  
Marker | string | 否 | 游标，表示当前位置，若marker为空，表示遍历完成  
  
GetStreamsListResponseItem结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Key | string | 否 | 直播流名  
  
### 示例

    
    
    a, err := manager.GetStreamsList(context.Background(), GetStreamListRequest{Hub: TestHub, LiveOnly: true, Limit: 10})
    

## 查询直播流信息

查询目标直播流基本信息和配置信息

### 调用方法

    
    
    func (m *Manager) GetStreamBaseInfo(ctx context.Context, req GetStreamBaseInfoRequest) (*GetStreamBaseInfoResponse, error)
    

### 参数说明

GetStreamBaseInfoRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Stream | string | 是 | 直播流名  
  
GetStreamBaseInfoResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
CreatedAt | int64 | 否 | 直播流创建时间，Unix 时间戳  
UpdatedAt | int64 | 否 | 直播流更新时间，Unix 时间戳，对一个流的配置做修改操作会更新这个值  
ExpireAt | int64 | 否 | 直播流过期时间，默认流过期时间15天，Unix 时间戳，过期的流会被自动清除。如您设置的默认存储过期时间是 N 天，那么一个流持续 N 天不推流就会被自动清除  
DisabledTill | int | 否 | 禁播结束时间，Unix 时间戳，-1 表示永久禁播  
Converts | []string | 否 | 转码配置  
Watermark | bool | 否 | 是否开启水印  
PublishSecurity | string | 否 | 推流鉴权类型  
PublishKey | string | 否 | 推流密钥  
NropEnable | bool | 否 | 是否开启鉴黄  
  
### 示例

    
    
    a, err := manager.GetStreamBaseInfo(context.Background(), GetStreamBaseInfoRequest{Hub: TestHub, Stream: TestStream})
    

## 禁用直播流

禁播或者解禁目标直播流，支持限时禁播或永久禁播

### 调用方法

    
    
    func (m *Manager) StreamDisable(ctx context.Context, req StreamDisabledRequest) error
    

### 参数说明

StreamDisabledRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Stream | string | 是 | 直播流名  
DisabledTill | int | 否 | 禁播结束时间，Unix 时间戳，特殊值含义： -1 永久禁播；0 解除禁播  
DisablePeriodSecond | int | 否 | 禁播时长，单位：秒，当 DisabledTill 为0时，DisablePeriodSecond 参数生效，值大于等于0  
  
### 示例

    
    
    err := manager.StreamDisable(context.Background(), StreamDisabledRequest{
       Hub:                 TestHub,
       Stream:              TestStream,
       DisablePeriodSecond: 60,
    })
    

## 查询在线流信息

查询直播开始时间、主播IP、当前码率、当前帧率等信息

### 调用方法

    
    
    func (m *Manager) GetStreamLiveStatus(ctx context.Context, req GetStreamLiveStatusRequest) (*GetStreamLiveStatusResponse, error)
    

### 参数说明

GetStreamLiveStatusRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Stream | string | 是 | 直播流名  
  
GetStreamLiveStatusResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
StreamLiveStatus | StreamLiveStatus | 否 | 直播流实时状态  
VideoBitRate | int | 否 | 视频码率，单位：bps  
AudioBitRate | int | 否 | 音频码率，单位：bps  
  
StreamLiveStatus结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
ServerIP | string | 否 | 服务端IP  
ClientIP | string | 否 | 推流端IP  
StartAt | int64 | 否 | 推流开始时间，Unix 时间戳  
Key | string | 否 | 直播流名  
  
StreamLiveStatusFPS结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Audio | int | 否 | 音频帧率  
Video | int | 否 | 视频帧率  
Data | int | 否 | metadata帧率  
  
### 示例

    
    
    a, err := manager.GetStreamLiveStatus(context.Background(), GetStreamLiveStatusRequest{Hub: TestHub, Stream: TestStream})
    

## 批量查询在线流信息

批量查询直播的开始时间、主播IP、当前码率、当前帧率等信息

### 调用方法

    
    
    func (m *Manager) BatchGetStreamLiveStatus(ctx context.Context, req BatchGetStreamLiveStatusRequest) (*BatchGetStreamLiveStatusResponse, error)
    

### 参数说明

BatchGetStreamLiveStatusRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Items | []string | 否 | 直播流列表，查询流列表数量不超过100  
  
BatchGetStreamLiveStatusResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Items | []StreamLiveStatus | 否 | 直播流列表  
  
StreamLiveStatus结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
StartAt | int64 | 否 | 推流开始时间，Unix 时间戳  
ServerIP | string | 否 | 服务端IP  
ClientIP | string | 否 | 推流端IP  
BPS | int | 否 | 推流码率  
FPS | StreamLiveStatusFPS | 否 | 帧率  
Key | string | 否 | 直播流名  
  
StreamLiveStatusFPS结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Audio | int | 否 | 音频帧率  
Video | int | 否 | 视频帧率  
Data | int | 否 | metadata帧率  
  
### 示例

    
    
    a, err := manager.BatchGetStreamLiveStatus(context.Background(), BatchGetStreamLiveStatusRequest{
       Hub:   TestHub,
       Items: []string{TestStream},
    })
    

## 查询直播流推流记录

查询目标直播流在一段时间内的推流记录

### 调用方法

    
    
    func (m *Manager) GetStreamHistory(ctx context.Context, req GetStreamHistoryRequest) (*GetStreamHistoryResponse, error)
    

### 参数说明

GetStreamHistoryRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Stream | string | 是 | 直播流名  
Start | int64 | 否 | 开始时间，单位：秒，默认为0  
End | int64 | 否 | 结束时间，单位：秒，默认为当前时间  
  
GetStreamHistoryResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Items | []GetStreamHistoryItem | 否 | 直播空间名  
  
GetStreamHistoryItem结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Start | int64 | 否 | 推流开始时间  
End | int64 | 否 | 推流结束时间  
ClientIP | string | 否 | 推流端IP  
ServerIP | string | 否 | 服务端IP  
  
### 示例

    
    
    a, err := manager.GetStreamHistory(context.Background(), GetStreamHistoryRequest{
       Hub:    TestHub,
       Stream: TestStream,
       Start:  time.Now().Add(-1 * time.Hour).Unix(),
       End:    time.Now().Unix(),
    })
    

## 录制直播回放

录制目标直播流一段时间内的直播为回放文件保存在存储空间中，可选回放文件的格式有m3u8、flv和mp4。其中录制为 flv、mp4
格式需要使用多媒体处理转码服务，录制过程需要一定时间。多媒体处理服务独立计费，使用会额外产生费用，详细费用请参考 [价格表
__](https://portal.qiniu.com/financial/price)

### 调用方法

    
    
    func (m *Manager) StreamSaveas(ctx context.Context, req StreamSaveasRequest) (*StreamSaveasResponse, error)
    

### 参数说明

StreamSaveasRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Stream | string | 是 | 直播流名  
Start | int64 | 否 | 开始时间，Unix 时间戳，默认为第一次直播开始时间  
End | int64 | 否 | 结束时间，Unix 时间戳，默认为当前时间  
Fname | string | 否 | 文件名，为空时会随机生成一个文件名  
Format | string | 否 | 文件格式，可选文件格式为  
m3u8：HLS格式，默认值  
flv：FLV格式，将回放切片转封装为单个flv文件，异步模式  
mp4：MP4格式，将回放切片转封装为单个mp4文件，异步模式  
异步模式下，生成回放文件需要一定时间  
Pipeline | string | 否 | 异步模式时，指定数据处理的队列，可以将优先级较高的任务配置到独立的队列中进行执行，参考文档：[流媒体队列 __](https://developer.qiniu.com/dora/kb/2500/streaming-media-queue-about-seven-cows)  
Notify | string | 否 | 回调地址，异步模式完成任务后的回调通知地址，不指定表示不做回调，参考文档：[状态查询 __](https://developer.qiniu.com/dora/1294/persistent-processing-status-query-prefop)  
ExpireDays | int | 否 | 切片文件的生命周期：  
0：默认值，表示修改ts文件生命周期为永久保存  
>0：表示修改ts文件的的生命周期为 `ExpireDays` 参数值  
-1：表示不修改ts文件的expire属性，可显著提升接口响应速度  
PersistentDeleteAfterDays | int | 否 | 生成文件的生命周期：  
0：默认值，表示生成文件（m3u8/flv/mp4）永久保存  
>0：表示生成文件（m3u8/flv/mp4）的生命周期为 `PersistentDeleteAfterDays` 参数值  
注意，对于m3u8文件，只有当`ExpireDays`为-1时，`persistentDeleteAfterDays`才会生效  
FirstTsType | byte | 否 | 过滤ts切片文件类型，部分非标准的直播流，在推流初期缺少视频帧或音频帧，过滤功能可以剔除这部分切片，  
0：默认值，不做过滤  
1：第一个ts切片需要是纯视频类型，不符合预期的ts切片将被跳过  
2：第一个ts切片需要是纯音频类型，不符合预期的ts切片将被跳过  
3：第一个ts切片需要是音视频类型，不符合预期的ts切片将被跳过  
  
StreamSaveasResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Fname | string | 否 | 文件名  
Start | int64 | 否 | 开始时间，Unix 时间戳  
End | int64 | 否 | 结束时间，Unix 时间戳  
PersistentID | string | 否 | 异步任务ID  
  
### 示例

    
    
    m := StreamSaveasRequest{
       Hub:         "testhub",
       Stream:      "abcd",
       Start:       time.Now().Add(-5 * time.Hour).Unix(),
       End:         time.Now().Unix(),
       Fname:       "test",
       ExpireDays:  -1,
       FirstTsType: 3,
    }
    a, err := manager.StreamSaveas(context.Background(), m)
    

## 保存直播截图

保存目标直播流在特定时间点的画面为图片，并保存在存储空间中。截图使用多媒体处理服务并独立计费，会额外产生费用，详细费用请参考 [价格表
__](https://portal.qiniu.com/financial/price)

### 调用方法

    
    
    func (m *Manager) StreamSnapshot(ctx context.Context, req StreamSnapshotRequest) (*StreamSnapshotResponse, error)
    

### 参数说明

StreamSnapshotRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Stream | string | 是 | 直播流名  
Time | int | 否 | 截图时间，Unix 时间戳，不指定则为当前时间  
Fname | string | 否 | 文件名，不指定系统会随机生成  
Format | string | 否 | 文件格式，默认为jpg，可取值为jpg和png  
Pipeline | string | 否 | 异步模式时，指定数据处理的队列，可以将优先级较高的任务配置到独立的队列中进行执行，参考文档：[流媒体队列 __](https://developer.qiniu.com/dora/kb/2500/streaming-media-queue-about-seven-cows)  
Notify | string | 否 | 回调地址，若指定回调地址，则截图动作为异步模式  
DeleteAfterDays | int | 否 | 生命周期，单位：天  
默认值为0，表示截图文件永久保存  
  
StreamSnapshotResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Fname | string | 否 | 文件名  
PersistentID | string | 否 | 异步任务ID  
  
### 示例

    
    
    ret, err := manager.StreamSnapshot(context.Background(), StreamSnapshotRequest{
       Hub:             "testhub",
       Stream:          "abcd",
       Time:            1632810081,
       Fname:           "test",
       DeleteAfterDays: 1,
    })
    

## 修改直播流转码配置

设置目标直播流使用的转码配置，设置好转码配置的直播流在推流开始时会触发转码，推流过程中修改转码配置不会立即生效，需要重新推流。

在播放地址后面添加 `@<ProfileName>` 即可播放相应转码流，目前可转码的配置有 `480p` 和
`720p`。使用转码服务会产生额外费用，详情费用请参考 [价格表 __](https://www.qiniu.com/prices/pili)

### 调用方法

    
    
    func (m *Manager) StreamConverts(ctx context.Context, req StreamConvertsRequest) error
    

### 参数说明

StreamConvertsRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Hub | string | 是 | 直播空间名  
Stream | string | 是 | 直播流名  
Converts | []string | 否 | 转码配置，如果提交的 ProfileName 为空数组，那么之前的转码配置将被取消  
如果需要配置水印，则需要以wmt_开头，下划线后加水印模版名  
  
### 示例

    
    
    err := manager.StreamConverts(context.Background(), StreamConvertsRequest{
    		Hub:      TestHub,
    		Stream:   TestStream,
    		Converts: []string{"480p", "720p"},
    	})
    

# 直播统计数据查询

## 查询直播上行流量

查询一段时间内目标直播空间、域名、区域的上行流量，延迟5分钟左右。

带宽数据可以从返回的流量数据`flow`转化，计算方法为`bandwidth=flow*8/300`

### 调用方法

    
    
    func (m *Manager) GetStatUpflow(ctx context.Context, req GetStatUpflowRequest) ([]StatResponse, error)
    

### 参数说明

GetStatUpflowRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
domain | 否 | 域名  
area | 否 | 区域，可取值为 cn(中国大陆)、hk(香港)、tw(台湾)、apac(亚太)、am(美洲)、emea(欧洲/中东/非洲)  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
flow | 是 | 流量，单位：byte，带宽可以从流量转换，公式为 带宽=流量*8/时间粒度，单位：bps  
  
StatResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]int | 否 | 数据，形式如：“values”:{“flow”:4527162977}，其中"flow"对应select项  
  
### 示例

    
    
    a, err := manager.GetStatUpflow(context.Background(), GetStatUpflowRequest{
       GetStatCommonRequest: GetStatCommonRequest{
          Begin: "20210928",
          End:   "20210930",
          G:     "day",
       },
       Where: map[string][]string{"hub": {TestHub}, "area": {"!cn", "!hk"}},
    })
    

## 分组查询直播上行流量

查询一段时间内目标直播空间、域名、区域的上行流量，按group分组，延迟5分钟左右。

带宽数据可以从返回的流量数据`flow`转化，计算方法为`bandwidth=flow*8/300`

### 调用方法

    
    
    func (m *Manager) GroupStatUpflow(ctx context.Context, req GroupStatUpflowRequest) ([]StatGroupResponse, error)
    

### 参数说明

GroupStatUpflowRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Group | string | 是 | 分组，取值范围为条件字段  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
domain | 否 | 域名  
area | 否 | 区域，可取值为 cn(中国大陆)、hk(香港)、tw(台湾)、apac(亚太)、am(美洲)、emea(欧洲/中东/非洲)  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
flow | 是 | 流量，单位：byte，带宽可以从流量转换，公式为 带宽=流量*8/时间粒度，单位：bps  
  
StatGroupResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]map[string]int | 否 | 数据，形式如：“values”:{“SD”:{“flow”:4527162977}}，其中"SD"对应Group项，"flow"对应Select项  
  
### 示例

    
    
    a, err := manager.GroupStatUpflow(context.Background(), GroupStatUpflowRequest{
    		GetStatCommonRequest: GetStatCommonRequest{
    			Begin: "20210928",
    			End:   "20210930",
    			G:     "day",
    		},
    		Select: []string{"flow"},
    		Where:  map[string][]string{"hub": {TestHub}},
    		Group:  "domain",
    	})
    

## 查询直播下行流量

查询一段时间内目标直播空间、域名、区域的下行流量，延迟5分钟左右。

带宽数据可以从返回的流量数据`flow`转化，计算方法为`bandwidth=flow*8/300`

### 调用方法

    
    
    func (m *Manager) GetStatDownflow(ctx context.Context, req GetStatDownflowRequest) ([]StatResponse, error)
    

### 参数说明

GetStatDownflowRequest结构体说明

参数名称 | 字段类型 | 是否必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
domain | 否 | 域名  
area | 否 | 区域，可取值为 cn(中国大陆)、hk(香港)、tw(台湾)、apac(亚太)、am(美洲)、emea(欧洲/中东/非洲)  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
flow | 是 | 流量，单位：byte，带宽可以从流量转换，公式为 带宽=流量*8/时间粒度，单位：bps  
  
StatResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]int | 否 | 数据，形式如：“values”:{“flow”:4527162977}，其中"flow"对应select项  
  
### 示例

    
    
    a, err := manager.GetStatDownflow(context.Background(), GetStatDownflowRequest{
       GetStatCommonRequest: GetStatCommonRequest{
          Begin: "20210928",
          End:   "20210930",
          G:     "day",
       },
       Select: []string{"flow"},
       Where:  map[string][]string{"hub": {TestHub}},
    })
    

## 分组查询直播下行流量

查询一段时间内目标直播空间、域名、区域的下行流量，按group分组，延迟5分钟左右。

带宽数据可以从返回的流量数据`flow`转化，计算方法为`bandwidth=flow*8/300`

### 调用方法

    
    
    func (m *Manager) GroupStatDownflow(ctx context.Context, req GroupStatDownflowRequest) ([]StatGroupResponse, error)
    

### 参数说明

GroupStatDownflowRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Group | string | 是 | 分组，取值范围为条件字段  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
domain | 否 | 域名  
area | 否 | 区域，可取值为 cn(中国大陆)、hk(香港)、tw(台湾)、apac(亚太)、am(美洲)、emea(欧洲/中东/非洲)  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
flow | 是 | 流量，单位：byte，带宽可以从流量转换，公式为 带宽=流量*8/时间粒度，单位：bps  
  
StatGroupResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]map[string]int | 否 | 数据，形式如：“values”:{“SD”:{“flow”:4527162977}}，其中"SD"对应Group项，"flow"对应Select项  
  
### 示例

    
    
    a, err := manager.GroupStatDownflow(context.Background(), GroupStatDownflowRequest{
    		GetStatCommonRequest: GetStatCommonRequest{
    			Begin: "20210928",
    			End:   "20210930",
    			G:     "day",
    		},
    		Select: []string{"flow"},
    		Where:  map[string][]string{"hub": {TestHub}},
    		Group:  "area",
    	})
    

## 查询直播转码使用量

查询一段时间内目标直播空间、转码配置的转码时长，延迟10分钟左右

### 调用方法

    
    
    func (m *Manager) GetStatCodec(ctx context.Context, req GetStatCodecRequest) ([]StatResponse, error)
    

### 参数说明

GetStatCodecRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
profile | 否 | 转码配置  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
duration | 是 | 时长，单位：毫秒  
  
StatResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]int | 否 | 数据，形式如：“values”:{“duration”:4527162977}，其中"duration"对应select项  
  
### 示例

    
    
    a, err := manager.GetStatCodec(context.Background(), GetStatCodecRequest{
       GetStatCommonRequest: GetStatCommonRequest{
          Begin: "20210928",
          End:   "20210930",
          G:     "day",
       },
       Select: []string{"duration"},
       Where:  map[string][]string{"hub": {TestHub}, "profile": {"480p", "720p"}},
    })
    

## 分组查询直播转码使用量

查询一段时间内目标直播空间、转码配置的转码时长，按group分组，延迟10分钟左右

### 调用方法

    
    
    func (m *Manager) GroupStatCodec(ctx context.Context, req GroupStatCodecRequest) ([]StatGroupResponse, error)
    

### 参数说明

GroupStatCodecRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Group | string | 是 | 分组，取值范围为条件字段  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
profile | 否 | 转码配置  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
duration | 是 | 时长，单位：毫秒  
  
StatGroupResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]map[string]int | 否 | 数据，形式如：“values”:{“SD”:{“duration”:4527162977}}，其中"SD"对应Group项，"duration"对应Select项  
  
### 示例

    
    
    a, err := manager.GroupStatCodec(context.Background(), GroupStatCodecRequest{
    		GetStatCommonRequest: GetStatCommonRequest{
    			Begin: "20210928",
    			End:   "20210930",
    			G:     "day",
    		},
    		Select: []string{"duration"},
    		Where:  map[string][]string{"hub": {TestHub}, "profile": {"!480p"}},
    		Group:  "profile",
    	})
    

## 查询直播鉴黄使用量

查询一段时间内目标直播空间的鉴黄次数，延迟10分钟左右

### 调用方法

    
    
    func (m *Manager) GetStatNrop(ctx context.Context, req GetStatNropRequest) ([]StatResponse, error)
    

### 参数说明

GetStatNropRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
assured | 否 | 鉴黄结果是否确定，true或false  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
count | 是 | 鉴黄次数  
  
StatResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]int | 否 | 数据，形式如：“values”:{“count”:452}，其中"count"对应select项  
  
### 示例

    
    
    a, err := manager.GetStatNrop(context.Background(), GetStatNropRequest{
       GetStatCommonRequest: GetStatCommonRequest{
          Begin: "20210928",
          End:   "20210930",
          G:     "day",
       },
       Select: []string{"count"},
       Where:  map[string][]string{"hub": {"!" + TestHub}, "assured": {"false"}},
    })
    

## 分组查询直播鉴黄使用量

查询一段时间内目标直播空间的鉴黄次数，按group分组，延迟10分钟左右

### 调用方法

    
    
    func (m *Manager) GroupStatNrop(ctx context.Context, req GroupStatNropRequest) ([]StatGroupResponse, error)
    

### 参数说明

GroupStatNropRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Group | string | 是 | 分组，取值范围为条件字段  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
hub | 否 | 直播空间名  
assured | 否 | 鉴黄结果是否确定，true或false  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
count | 是 | 鉴黄次数  
  
StatGroupResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]map[string]int | 否 | 数据，形式如：“values”:{“SD”:{“count”:4527162977}}，其中"SD"对应Group项，"count"对应Select项  
  
### 示例

    
    
    a, err := manager.GroupStatNrop(context.Background(), GroupStatNropRequest{
    		GetStatCommonRequest: GetStatCommonRequest{
    			Begin: "20210928",
    			End:   "20210930",
    			G:     "day",
    		},
    		Select: []string{"count"},
    		Where:  map[string][]string{"hub": {"!"+TestHub}, "assured": {"false", "true"}},
    		Group:  "hub",
    	})
    

## 查询导播台使用量

查询一段时间内导播台使用时长，延迟分钟级

### 调用方法

    
    
    func (m *Manager) GetStatCaster(ctx context.Context, req GetStatCasterRequest) ([]StatResponse, error)
    

### 参数说明

GetStatCasterRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
container | 否 | 容器  
resolution | 否 | 分辨率  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
upflow | 否 | 上行流量，单位：byte  
downflow | 否 | 下行流量，单位：byte  
duration | 否 | 使用时长，单位：秒  
  
StatResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]int | 否 | 数据，形式如：“values”:{“upflow”:4527162977}，其中"upflow"对应select项  
  
### 示例

    
    
    a, err := manager.GetStatCaster(context.Background(), GetStatCasterRequest{
       GetStatCommonRequest: GetStatCommonRequest{
          Begin: "20211024",
          End:   "20211026",
          G:     "day",
       },
       Select: []string{"upflow", "downflow", "duration"},
       Where:  map[string][]string{},
    })
    

## 分组查询导播台使用量

查询一段时间内导播台使用时长，按group分组，延迟分钟级

### 调用方法

    
    
    func (m *Manager) GroupStatCaster(ctx context.Context, req GroupStatCasterRequest) ([]StatGroupResponse, error)
    

### 参数说明

GroupStatCasterRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Group | string | 是 | 分组，取值范围为条件字段  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
container | 否 | 容器  
resolution | 否 | 分辨率  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
upflow | 否 | 上行流量，单位：byte  
downflow | 否 | 下行流量，单位：byte  
duration | 否 | 使用时长，单位：秒  
  
StatGroupResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]map[string]int | 否 | 数据，形式如：“values”:{“SD”:{“upflow”:4527162977}}，其中"SD"对应Group项，"upflow"对应Select项  
  
### 示例

    
    
    a, err := manager.GroupStatCaster(context.Background(), GroupStatCasterRequest{
    		GetStatCommonRequest: GetStatCommonRequest{
    			Begin: "20210928",
    			End:   "20210930",
    			G:     "day",
    		},
    		Select: []string{"upflow"},
    		Group:  "resolution",
    	})
    

## 查询Pub转推服务使用量

查询一段时间内转推服务的使用时长和次数，延迟10分钟内

### 调用方法

    
    
    func (m *Manager) GetStatPub(ctx context.Context, req GetStatPubRequest) ([]StatResponse, error)
    

### 参数说明

GetStatPubRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
tp | 否 | 状态，可选项 normal  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
count | 否 | 转推次数  
duration | 否 | 转推时长，单位：毫秒  
  
StatResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]int | 否 | 数据，形式如：“values”:{“flow”:4527162977}，其中"flow"对应select项  
  
### 示例

    
    
    a, err := manager.GetStatPub(context.Background(), GetStatPubRequest{
       GetStatCommonRequest: GetStatCommonRequest{
          Begin: "20211024",
          End:   "20211026",
          G:     "day",
       },
       Select: []string{"duration"},
       Where:  map[string][]string{},
    })
    

## 分组查询Pub转推服务使用量

查询一段时间内转推服务的使用时长和次数，按group分组，延迟10分钟内

### 调用方法

    
    
    func (m *Manager) GroupStatPub(ctx context.Context, req GroupStatPubRequest) ([]StatGroupResponse, error)
    

### 参数说明

GroupStatPubRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
GetStatCommonRequest | GetStatCommonRequest | 是 | 通用请求参数  
Group | string | 是 | 分组，取值范围为条件字段  
Where | map[string][]string | 否 | 查询条件  
Select | []string | 是 | 查询值  
  
GetStatCommonRequest结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Begin | string | 是 | 开始时间，支持格式：20060102、20060102150405  
End | string | 是 | 结束时间，支持格式：20060102、20060102150405，超过当前时间，则以当前时间为准，时间范围为左闭右开区间  
G | string | 是 | 时间粒度，可取值为 5min、hour、day、month  
  
Where条件字段说明

参数名称 | 必填 | 说明  
---|---|---  
tp | 否 | 状态，可选项 normal  
  
Select值字段说明

参数名称 | 必填 | 说明  
---|---|---  
count | 否 | 转推次数  
duration | 否 | 转推时长，单位：毫秒  
  
StatGroupResponse结构体说明

参数名称 | 字段类型 | 必填 | 说明  
---|---|---|---  
Time | time.Time | 否 | 时间  
Values | map[string]map[string]int | 否 | 数据，形式如：“values”:{“normal”:{“count”:4527162977}}，其中"normal"对应Group项，"count"对应Select项  
  
### 示例

    
    
    a, err := manager.GroupStatPub(context.Background(), GroupStatPubRequest{
    		GetStatCommonRequest: GetStatCommonRequest{
    			Begin: "20210928",
    			End:   "20210930",
    			G:     "hour",
    		},
    		Select: []string{"duration"},
    		Group:  "tp",
    	})
    

以上内容是否对您有帮助？