pili

package
v7.13.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 1, 2022 License: MIT Imports: 19 Imported by: 0

README

Pili Streaming Cloud Server-Side Library for Go

Features

  • 推拉流URL && 签算方法

    • RTMP 推流地址
    • SRT 推流地址
    • RTMP 播放地址
    • HLS 播放地址
    • HDL(FLV) 播放地址
    • 推流 URL 签算(直播鉴权)
    • 播放 URL 签算(时间戳防盗链)
  • 直播空间管理(Hub)

    • 查询直播空间列表 GET /v2/hubs
    • 查询直播空间信息 GET /v2/hubs/<hub>
    • 修改直播空间推流鉴权配置 POST /v2/hubs/<hub>/security
    • 修改直播空间hls低延迟配置 POST /v2/hubs/<hub>/hlsplus
    • 修改直播空间存储配置 POST /v2/hubs/<hub>/persistence
    • 修改直播空间封面配置 POST /v2/hubs/<hub>/snapshot
  • 域名管理(Domain)

    • 查询域名列表 GET /v2/hubs/<hub>/domains
    • 查询域名信息 GET /v2/hubs/<hub>/domains/<domain>
    • 绑定直播域名 POST /v2/hubs/<hub>/newdomains
    • 解绑直播域名 DELETE /v2/hubs/<hub>/domains/<domain>
    • 配置点播域名 POST /v2/hubs/<hub>/voddomain
    • 修改域名证书配置 POST /v2/hubs/<hub>/domains/<domain>/cert
    • 更新域名改写规则 POST /v2/hubs/<hub>/domains/<domain>/urlrewrite
  • 直播流管理(Stream)

    • 查询直播流列表 GET v2/hubs/<hub>/streams
    • 查询直播流信息 GET v2/hubs/<hub>/streams/<EncodedStreamTitle>
    • 禁用直播流 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/disabled
    • 查询在线流信息 GET v2/hubs/<hub>/streams/<EncodedStreamTitle>/live
    • 批量查询在线流信息 POST /v2/hubs/<hub>/livestreams
    • 查询直播流推流记录 GET /v2/hubs/<hub>/streams/<EncodedStreamTitle>/historyactivity
    • 录制直播回放 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/saveas
    • 保存直播截图 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/snapshot
    • 修改直播流转码配置 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/converts
  • 数据统计(Stat)

    • 上行流量 GET /statd/upflow
    • 下行流量 GET /statd/downflow
    • 直播转码使用量 GET /statd/codec
    • 直播鉴黄使用量 GET /statd/nrop
    • 导播台使用量 GET /statd/caster
    • Pub服务使用量 GET /statd/pub

Usage

package main

import (
	// ...
	"github.com/maczh/qiniu-sdk/v7/pili"
)

var (
	AccessKey = "<QINIU ACCESS KEY>" // 替换成自己 Qiniu 账号的 AccessKey
	SecretKey = "<QINIU SECRET KEY>" // 替换成自己 Qiniu 账号的 SecretKey
)

func main() {
	// ...
	conf := pili.ManagerConfig{AccessKey: AccessKey, SecretKey: SecretKey}
	manager := pili.NewManager(conf)
	// ...
}

Documentation

Index

Constants

View Source
const (
	// APIHost 标准 API 服务器地址
	APIHost = "pili.qiniuapi.com"

	// IAMAPIHost IAM(权限策略) API 服务器地址
	IAMAPIHost = "pili-iam.qiniuapi.com"

	// APIHTTPScheme HTTP 模式
	APIHTTPScheme = "http://"

	// APIHTTPSScheme HTTPS 模式
	APIHTTPSScheme = "https://"

	// DefaultAppName 默认 AppName 名称
	DefaultAppName = "pili"
)
View Source
const (
	// DomainPublishRTMP 推流域名
	DomainPublishRTMP = "publishRtmp"

	// DomainLiveRTMP RTMP 播放域名
	DomainLiveRTMP = "liveRtmp"

	// DomainLiveHLS HLS 播放域名
	DomainLiveHLS = "liveHls"

	// DomainLiveHDL HDL 播放域名
	DomainLiveHDL = "liveHdl"
)

域名类型

View Source
const (
	// FlowDefaultSelect 上下行流量默认查询字段
	FlowDefaultSelect = "flow"

	// CodecDefaultSelect 转码使用量默认查询字段
	CodecDefaultSelect = "duration"

	// NropDefaultSelect 鉴黄使用量默认查询字段
	NropDefaultSelect = "count"
)
View Source
const (

	// SRTScheme SRT 协议头
	SRTScheme = "srt"

	// SRTPort SRT 协议端口
	// 截止目前,SRT 协议没有 IANA 官方约定的端口号
	// 七牛采用 1935/UDP 作为 SRT 协议端口号
	SRTPort = "1935"

	// SecurityTypeStaticKeyPart 静态鉴权密钥字段名
	SecurityTypeStaticKeyPart = "key"

	// SecurityTypeExpiryTsPart 推流限时鉴权时间戳字段名
	SecurityTypeExpiryTsPart = "expire"

	// SecurityTypeExpirySkTsPart 推流限时鉴权sk时间戳字段名
	SecurityTypeExpirySkTsPart = "e"

	// SecurityTypeDynamicNoncePart 动态鉴权随机值字段名
	SecurityTypeDynamicNoncePart = "nonce"

	// SecurityTypeTokenPart 鉴权签算字段名
	// 用于 限时鉴权(expiry)、限时鉴权SK(expiry_sk)、动态鉴权(dynamic)
	SecurityTypeTokenPart = "token"
)
View Source
const (

	// SecurityTypeNull 未设置鉴权
	SecurityTypeNull = ""

	// SecurityTypeNone 关闭鉴权
	// 用于推流 URL 签算(直播鉴权)和播放 URL 签算(时间戳防盗链)
	// 强制关闭鉴权,域名级别鉴权不继承直播空间级别鉴权配置
	SecurityTypeNone = "none"

	// SecurityTypeStatic 静态鉴权
	// 用于推流 URL 签算(直播鉴权)
	SecurityTypeStatic = "static"

	// SecurityTypeExpiry 限时鉴权
	// 用于推流 URL 签算(直播鉴权)
	SecurityTypeExpiry = "expiry"

	// SecurityTypeExpirySK 限时鉴权SK
	// 用于推流 URL 签算(直播鉴权)
	SecurityTypeExpirySK = "expiry_sk"

	// Deprecated: SecurityTypeDynamic 动态鉴权
	// 用于推流 URL 签算(直播鉴权),该鉴权类型即将移除,不建议使用
	SecurityTypeDynamic = "dynamic"

	// SecurityTypeTsStartMD5 时间戳防盗链开始时间限制
	// 用于播放 URL 签算(时间戳防盗链)
	// 签算有效时间从 URL 的时间戳开始,直到超过有效时间(range)范围
	SecurityTypeTsStartMD5 = "tsStartMD5"

	// SecurityTypeTsExpireMD5 时间戳防盗链结束时间限制
	// 用于播放 URL 签算(时间戳防盗链)
	// 签算有效时间从当前时间开始,直到 URL 的时间戳为止
	SecurityTypeTsExpireMD5 = "tsExpireMD5"
)
View Source
const (
	TagName = "validate"
)

Variables

View Source
var (
	ErrInvalidArgs             = &client.ErrorInfo{Code: http.StatusBadRequest, Err: "invalid args"}
	ErrInvalidRule             = &client.ErrorInfo{Code: http.StatusBadRequest, Err: "invalid rule"}
	ErrUnsupportedSecurityType = &client.ErrorInfo{Code: http.StatusBadRequest, Err: "unsupported security type"}
)

Functions

func ErrInfo

func ErrInfo(code int, err string) *client.ErrorInfo

func Form

func Form(obj interface{}) map[string][]string

Form 请求参数格式化

func HDLPlayURL

func HDLPlayURL(hub, domain, streamTitle string) string

HDLPlayURL 生成 HDL 播放地址

func HLSPlayURL

func HLSPlayURL(hub, domain, streamTitle string) string

HLSPlayURL 生成 HLS 播放地址

func RTMPPlayURL

func RTMPPlayURL(hub, domain, streamTitle string) string

RTMPPlayURL 生成 RTMP 播放地址

func RTMPPublishURL

func RTMPPublishURL(hub, domain, streamTitle string) string

RTMPPublishURL 生成 RTMP 推流地址

func SRTPublishURL

func SRTPublishURL(hub, domain, streamTitle string) string

SRTPublishURL 生成 SRT 推流地址

func SetAppName

func SetAppName(appName string)

SetAppName 设置App名称 命名规则遵循 [A-Za-z0-9_\ \-\.]*

func SignPlayURL

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

SignPlayURL 播放 URL 签算(时间戳防盗链) 支持鉴权规格为 - tsStartMD5: 时间戳防盗链开始时间限制 - tsExpireMD5: 时间戳防盗链结束时间限制

func SignPublishURL

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

SignPublishURL 推流 URL 签算(直播鉴权) 支持鉴权规格为 - static: 静态鉴权 - expiry: 限时鉴权 - expiry_sk: 限时鉴权SK - dynamic: 动态鉴权

Types

type AccessLogOptions

type AccessLogOptions struct {

	// SaveBucket 存储空间
	SaveBucket string `json:"saveBucket"`

	// ExpireDays 过期天数
	ExpireDays int `json:"expireDays"`
}

AccessLogOptions 配置

type BatchGetStreamLiveStatusRequest

type BatchGetStreamLiveStatusRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Items 流列表
	// 查询流列表数量不超过100
	Items []string `json:"items" validate:"-"`
}

BatchGetStreamLiveStatusRequest 批量查询直播实时状态请求参数

type BatchGetStreamLiveStatusResponse

type BatchGetStreamLiveStatusResponse struct {

	// Items 流列表
	Items []StreamLiveStatus `json:"items"`
}

BatchGetStreamLiveStatusResponse 批量查询直播实时状态返回值

type BindDomainRequest

type BindDomainRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Domain 域名
	Domain string `json:"domain" validate:"required"`

	// Type 域名类型
	// 可选域名类型为
	// - publishRtmp: RTMP 推流域名
	// - liveRtmp: RTMP 播放域名
	// - liveHls: HLS 播放域名
	// - liveHdl: HDL 播放域名
	Type string `validate:"required,oneof=publishRtmp liveRtmp liveHls liveHdl"`
}

BindDomainRequest 绑定域名请求参数

type BindVodDomainRequest

type BindVodDomainRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// VodDomain 点播域名
	VodDomain string `json:"vodDomain" validate:"required"`
}

BindVodDomainRequest 绑定点播域名请求参数

type DefaultDomain

type DefaultDomain struct {

	// Type 域名类型
	Type string `json:"type"`

	// Domain 域名
	Domain string `json:"domain"`
}

DefaultDomain 默认域名

type DomainCallbackConfig

type DomainCallbackConfig struct {

	// Type 回调类型
	// 可选回调类型为
	// - 留空: 不开启回调功能
	// - GET: 发送GET请求回调,请求参数携带在query中
	// - FORM: 发送POST请求回调,请求参数携带在body中,Content-Type 为 application/x-www-form-urlencoded
	// - JSON: 发送POST请求回调,请求参数携带在body中,Content-Type 为 application/json
	Type string `json:"type"`

	// URL 回调地址
	// 支持魔法变量
	URL string `json:"url"`

	// Timeout 超时时间
	// 与回调地址的 HTTP 连接超时时间,单位:秒
	// 默认值为 2 秒,配置范围为 0~10 秒
	Timeout int64 `json:"timeout"`

	// Vars 请求参数
	// 支持魔法变量,至少需要一组请求参数,规则解析出错误的会设置成空字段
	Vars map[string]string `json:"vars"`

	// RetryTimes 重试次数
	// 可选范围 0~5 次
	RetryTimes int `json:"retryTimes"`

	// RetryInterval 重试间隔
	// 可选范围 0~5 秒,单位:秒
	RetryInterval int `json:"retryInterval"`

	// SuccessCode 回调成功的 http code
	// 为 0 表示通配
	SuccessCode int `json:"successCode"`

	// FailCode 回调失败的 http code
	// 为 0 表示通配,当 SuccessCode 不为 0 的情况下生效
	FailCode int `json:"failCode"`
}

DomainCallbackConfig 域名回调配置

type DomainIPLimit

type DomainIPLimit struct {

	// WhiteList 白名单
	// 允许推拉流的 IP 列表,CIDR 类型
	// 配置白名单后,黑名单列表将失效
	WhiteList []string `json:"whitelist"`

	// BlackList 黑名单
	// 限制推拉流的 IP 列表,CIDR 类型
	BlackList []string `json:"blacklist"`
}

DomainIPLimit IP 限制

type DomainPlaySecurity

type DomainPlaySecurity struct {

	// Type 防盗链类型
	// 可选防盗链类型为
	// - 留空: 默认类型,表示继承直播空间级别配置
	// - none: 表示关闭鉴权
	// - tsStartMD5: 有效时间从 TsPart 表示的时间戳开始,到 Range 秒后截止
	// - tsExpireMD5: 有效时间从现在当前到 TsPart 表示的时间戳为止
	Type string `json:"type"`

	// Key1 主密钥
	Key1 string `json:"key1"`

	// Key2 副密钥
	// 两个密钥将同时生效,便于线上业务替换密钥
	Key2 string `json:"key2"`

	// Range 有效时间
	// 当 Type 为 "tsStartMD5" 时生效,单位:秒
	Range int `json:"range"`

	// Rule 签名规则
	// 支持魔法变量的规则,最终签算结果为所有变量的md5
	// - $(key): 密钥
	// - $(path): URL 中的 path 部分
	// - $(streamKey): URL 中的 hub/stream 部分
	// - $(streamTitle): URL 中的 stream 部分
	// - $(path_<number>): URL 中的 path 部分,<number> 表示 path 层级
	// - $(_<query>): URL 中的 query 字段,举例: key1=val,魔法变量中使用 $(_key1) 表示 val
	// 举例:
	// 配置Rule为: $(key)$(path)$(_t)
	// 魔法变量替换完成后: key/hub/streamTitle1634745600
	// 对结果进行md5计算,最终签算值为:3bc26fe6b35f5c7efab87778c5b27993
	Rule string `json:"rule"`

	// Rule2 签名规则 2
	// 两个签名规则将同时生效,便于线上业务更换签名规则
	Rule2 string `json:"rule2"`

	// TsPart 时间戳字段
	// URL中表示时间戳的字段名
	TsPart string `json:"tsPart"`

	// TsBase 时间戳进制
	// 可选进制格式为 2-36,即 2 进制到 36 进制,默认使用16进制
	TsBase int `json:"tsBase"`

	// SignPart 签名字段
	// URL中表示token的字段名
	SignPart string `json:"signPart"`

	// GapDuration 时间误差值
	// 针对 tsExpireMD5 生效,避免因签算方与服务器本地时间误差造成的鉴权失败
	GapDuration int `json:"gapDuration"`
}

DomainPlaySecurity 时间戳防盗链配置

type DomainURLRewriteRule

type DomainURLRewriteRule struct {

	// Pattern 匹配规则
	// 针对完整URL的正则表达式,形式如:(.+)/live/(.+)/playlist.m3u8
	// 括号中的内容允许在 Replace 中使用${n}引用(n表示括号顺序)
	Pattern string `json:"pattern" validate:"required"`

	// Replace 改写规则
	// 希望得到的改写结果,形式如:${1}/hub/${2}.m3u8
	// 改写后的URL应符合七牛的直播URL规范: <scheme>://<domain>/<hub>/<stream>[<ext>]?<query>
	Replace string `json:"replace" validate:"required"`
}

DomainURLRewriteRule URL 改写规则

type DomainUrlRewrite

type DomainUrlRewrite struct {

	// Rules 规则列表
	Rules []DomainUrlRewriteItem `json:"rules"`
}

DomainUrlRewrite URL 改写规则配置

type DomainUrlRewriteItem

type DomainUrlRewriteItem struct {

	// Pattern 匹配规则
	Pattern string `json:"pattern"`

	// Replace 改写规则
	Replace string `json:"replace"`
}

DomainUrlRewriteItem URL 改写规则项

type GetDomainInfoRequest

type GetDomainInfoRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Domain 域名
	Domain string `json:"-" validate:"required"`
}

GetDomainInfoRequest 查询域名信息请求参数

type GetDomainInfoResponse

type GetDomainInfoResponse struct {

	// Domain 域名
	Domain string `json:"domain"`

	// Type 域名类型
	Type string `json:"type"`

	// Cname CNAME
	Cname string `json:"cname"`

	// ConnectCallback 开播回调配置
	ConnectCallback DomainCallbackConfig `json:"connectCallback"`

	// DisconnectCallback 断播回调配置
	DisconnectCallback DomainCallbackConfig `json:"disconnectCallback"`

	// IPLimit IP 访问限制
	IPLimit DomainIPLimit `json:"ipLimit"`

	// PlaySecurity 时间戳防盗链配置
	PlaySecurity DomainPlaySecurity `json:"playSecurity"`

	// DisconnectDelay 断流延迟配置
	// 单位:秒,针对直播流短时间内闪断重连的情况,不触发断流回调,避免因为短时间内频繁断流造成大量回调
	DisconnectDelay int64 `json:"disconnectDelay"`

	// UrlRewrite URL 改写规则
	UrlRewrite DomainUrlRewrite `json:"urlRewrite"`

	// CertEnable 是否配置 SSL 证书
	CertEnable bool `json:"certEnable"`

	// CertName 证书名称
	CertName string `json:"certName"`

	// Disable 域名是否为禁用状态
	Disable bool `json:"disable"`
}

GetDomainInfoResponse 查询域名信息返回值

type GetDomainsListItem

type GetDomainsListItem struct {

	// Type 域名类型
	Type string `json:"type"`

	// Domain 域名
	Domain string `json:"domain"`

	// Cname CNAME
	Cname string `json:"cname"`

	// CertEnable 是否配置 SSL 证书
	CertEnable bool `json:"certEnable"`

	// CertName 证书名称
	CertName string `json:"certName"`
}

GetDomainsListItem 查询域名列表项

type GetDomainsListRequest

type GetDomainsListRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`
}

GetDomainsListRequest 查询域名列表请求参数

type GetDomainsListResponse

type GetDomainsListResponse struct {

	// Domains 域名列表
	Domains []GetDomainsListItem `json:"domains"`
}

GetDomainsListResponse 查询域名列表返回值

type GetHubInfoRequest

type GetHubInfoRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`
}

GetHubInfoRequest 查询直播空间信息请求参数

type GetHubInfoResponse

type GetHubInfoResponse struct {

	// Name 直播空间名称
	Name string `json:"hubName"`

	// CreatedAt 创建时间
	// Unix 时间戳
	CreatedAt int64 `json:"createdAt"`

	// UpdatedAt 更新时间
	// Unix 时间戳
	UpdatedAt int64 `json:"updatedAt"`

	// Domains 直播空间下的域名列表
	Domains []HubDomain `json:"domains"`

	// DefaultDomains 直播空间默认域名
	DefaultDomains []DefaultDomain `json:"defaultDomains"`

	// StorageBucket 存储 bucket
	StorageBucket string `json:"storageBucket"`

	// LiveDataExpireDays 存储过期时间
	// 单位:天
	LiveDataExpireDays int64 `json:"liveDataExpireDays"`

	// PublishSecurity 推流鉴权方式
	PublishSecurity string `json:"publishSecurity"`

	// Nrop 鉴黄配置信息
	Nrop NropArgs `json:"nrop"`

	// PassiveCodecProfiles 被动转码配置
	// 形式如:720p
	PassiveCodecProfiles []string `json:"passiveCodecProfiles,omitempty"`

	// Converts 主动转码配置
	// 形式如:720p
	Converts []string `json:"converts"`

	// HlsPlus 是否开启 hls 低延迟
	HlsPlus bool `json:"hlsPlus"`

	// VodDomain 点播域名
	VodDomain string `json:"vodDomain"`

	// AccessLog 直播日志保存信息
	AccessLog AccessLogOptions `json:"accesslog"`

	// SnapshotInterval 直播封面的截图间隔
	// 单位:秒
	SnapshotInterval int `json:"snapshotInterval"`
}

GetHubInfoResponse 查询直播空间信息返回值

type GetHubListItem

type GetHubListItem struct {

	// Name 直播空间
	Name string `json:"name"`
}

GetHubListItem 查询直播空间列表项

type GetHubListResponse

type GetHubListResponse struct {

	// Items 直播空间列表
	Items []GetHubListItem `json:"items"`
}

GetHubListResponse 查询直播空间列表返回值

type GetStatCasterRequest

type GetStatCasterRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Where 查询条件
	// container 容器
	// resolution 分辨率
	Where map[string][]string `validate:"dive,keys,oneof=container resolution"`

	// Select 查询值
	// upflow 上行流量,单位:byte
	// downflow 下行流量,单位:byte
	// duration 使用时长,单位:秒
	Select []string `validate:"required,dive,oneof=upflow downflow duration"`
}

GetStatCasterRequest 获取导播台使用量请求参数

type GetStatCodecRequest

type GetStatCodecRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Where 查询条件
	// hub 直播空间
	// profile 转码规格
	Where map[string][]string `validate:"dive,keys,oneof=hub profile"`

	// Select 查询值
	// duration 时长,单位:毫秒
	Select []string `validate:"dive,eq=duration"`
}

GetStatCodecRequest 获取直播转码使用量请求参数

type GetStatCommonRequest

type GetStatCommonRequest struct {

	// Begin 开始时间
	// 支持格式:20060102、20060102150405
	Begin string `validate:"required,len=8|len=14"`

	// End 结束时间
	// 支持格式:20060102、20060102150405
	// 超过当前时间,则以当前时间为准
	// 时间范围为左闭右开区间
	End string `validate:"len=8|len=14"`

	// G 时间粒度
	// 可选项 5min hour day month,部分接口仅支持部分粒度
	G string `validate:"required,oneof=5min hour day month"`
}

GetStatCommonRequest 统计接口通用请求参数

type GetStatDownflowRequest

type GetStatDownflowRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Where 查询条件
	// hub 直播空间
	// domain 域名
	// area 区域 中国大陆(cn)、香港(hk)、台湾(tw)、亚太(apac)、美洲(am)、欧洲/中东/非洲(emea)
	Where map[string][]string `validate:"dive,keys,oneof=hub domain area"`

	// Select 查询值
	// flow 流量,单位:byte,带宽可以从流量转换,公式为 带宽=流量*8/时间粒度,单位:bps
	Select []string `validate:"dive,eq=flow"`
}

GetStatDownflowRequest 获取下行流量请求参数

type GetStatNropRequest

type GetStatNropRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Where 查询条件
	// hub 直播空间
	// assured 鉴黄结果是否确定,true或false
	Where map[string][]string `validate:"dive,keys,oneof=hub assured"`

	// Select 查询值
	// count 鉴黄次数
	Select []string `validate:"dive,eq=count"`
}

GetStatNropRequest 获取直播鉴黄使用量请求参数

type GetStatPubRequest

type GetStatPubRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Where 查询条件
	// tp 状态
	Where map[string][]string `validate:"dive,keys,eq=tp"`

	// Select 查询值
	// count 转推次数
	// duration 转推时长,单位:毫秒
	Select []string `validate:"required,dive,oneof=count duration"`
}

GetStatPubRequest 获取Pub服务使用量请求参数

type GetStatUpflowRequest

type GetStatUpflowRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Where 查询条件
	// hub 直播空间
	// domain 域名
	// area 区域 中国大陆(cn)、香港(hk)、台湾(tw)、亚太(apac)、美洲(am)、欧洲/中东/非洲(emea)
	Where map[string][]string `validate:"dive,keys,oneof=hub domain area"`

	// Select 查询值
	// flow 流量,单位:byte,带宽可以从流量转换,公式为 带宽=流量*8/时间粒度,单位:bps
	Select []string `validate:"dive,eq=flow"`
}

GetStatUpflowRequest 获取上行流量请求参数

type GetStreamBaseInfoRequest

type GetStreamBaseInfoRequest struct {

	// Hub 直播空间
	Hub string `validate:"required"`

	// Stream 流名
	Stream string `validate:"required"`
}

GetStreamBaseInfoRequest 查询直播流信息请求参数

type GetStreamBaseInfoResponse

type GetStreamBaseInfoResponse struct {

	// CreatedAt 直播流创建时间
	// Unix 时间戳,单位:秒
	CreatedAt int64 `json:"createdAt"`

	// UpdatedAt 直播流更新时间
	// Unix 时间戳,单位:秒
	UpdatedAt int64 `json:"updatedAt"`

	// ExpireAt 直播流过期时间
	// 默认流过期时间15天,Unix 时间戳,单位:秒
	ExpireAt int64 `json:"expireAt"`

	// DisabledTill 禁用结束时间
	DisabledTill int `json:"disabledTill"`

	// Converts 转码配置
	Converts []string `json:"converts"`

	// Watermark 是否开启水印
	Watermark bool `json:"watermark"`

	// PublishSecurity 推流鉴权类型
	PublishSecurity string `json:"publishSecurity"`

	// PublishKey 推流密钥
	PublishKey string `json:"publishKey"`

	// NropEnable 是否开启鉴黄
	NropEnable bool `json:"nropEnable"`
}

GetStreamBaseInfoResponse 查询直播流信息返回值

type GetStreamHistoryItem

type GetStreamHistoryItem struct {

	// Start 推流开始时间
	Start int64 `json:"start"`

	// End 推流结束时间
	End int64 `json:"end"`

	// ClientIP 推流端IP
	ClientIP string `json:"clientIP"`

	// ServerIP 服务端IP
	ServerIP string `json:"serverIP"`
}

GetStreamHistoryItem 查询直播流推流记录项

type GetStreamHistoryRequest

type GetStreamHistoryRequest struct {

	// Hub 直播空间
	Hub string `validate:"required"`

	// Stream 流名
	Stream string `validate:"required"`

	// Start 开始时间
	// 单位:秒,默认为0
	Start int64 `validate:"gte=0"`

	// End 结束时间
	// 单位:秒,默认为当前时间
	End int64 `validate:"gte=0"`
}

GetStreamHistoryRequest 查询直播流推流记录请求参数

type GetStreamHistoryResponse

type GetStreamHistoryResponse struct {

	// Items 直播流推流记录列表
	Items []GetStreamHistoryItem `json:"items"`
}

GetStreamHistoryResponse 查询直播流推流记录返回值

type GetStreamListRequest

type GetStreamListRequest struct {

	// Hub 直播空间
	Hub string `validate:"required"`

	// LiveOnly 只返回当前在线的流
	LiveOnly bool `validate:"-"`

	// Prefix 流名称前缀匹配
	Prefix string `validate:"-"`

	// Limit 返回值数量限制
	Limit int `validate:"gte=0,lte=5000"`

	// Marker 游标
	// 从该位置开始返回
	Marker string `validate:"-"`
}

GetStreamListRequest 查询直播流列表请求参数

type GetStreamLiveStatusRequest

type GetStreamLiveStatusRequest struct {

	// Hub 直播空间
	Hub string `validate:"required"`

	// Stream 流名
	Stream string `validate:"required"`
}

GetStreamLiveStatusRequest 查询直播流实时信息请求参数

type GetStreamLiveStatusResponse

type GetStreamLiveStatusResponse struct {

	// StreamLiveStatus 直播流实时状态
	StreamLiveStatus

	// VideoBitRate 视频码率,单位:bps
	VideoBitRate int `json:"videoBitRate"`

	// AudioBitRate 音频码率,单位:bps
	AudioBitRate int `json:"audioBitRate"`
}

GetStreamLiveStatusResponse 查询直播流实时信息返回值

type GetStreamsListResponse

type GetStreamsListResponse struct {

	// Items 流列表
	Items []GetStreamsListResponseItem `json:"items"`

	// Marker 游标
	// 表示当前位置,若marker为空,表示遍历完成
	Marker string `json:"marker"`
}

GetStreamsListResponse 查询直播流列表返回值

type GetStreamsListResponseItem

type GetStreamsListResponseItem struct {

	// Key 流名
	Key string `json:"key"`
}

type GroupStatCasterRequest

type GroupStatCasterRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Group 分组
	Group string `validate:"required,oneof=container resolution"`

	// Where 查询条件
	// container 容器
	// resolution 分辨率
	Where map[string][]string `validate:"dive,keys,oneof=container resolution"`

	// Select 查询值
	// upflow 上行流量,单位:byte
	// downflow 下行流量,单位:byte
	// duration 使用时长,单位:秒
	Select []string `validate:"required,dive,oneof=upflow downflow duration"`
}

GroupStatCasterRequest 分组获取导播台使用量请求参数

type GroupStatCodecRequest

type GroupStatCodecRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Group 分组
	Group string `validate:"required,oneof=hub profile"`

	// Where 查询条件
	// hub 直播空间
	// profile 转码规格
	Where map[string][]string `validate:"dive,keys,oneof=hub profile"`

	// Select 查询值
	// duration 时长,单位:毫秒
	Select []string `validate:"dive,eq=duration"`
}

GroupStatCodecRequest 分组获取直播转码使用量请求参数

type GroupStatDownflowRequest

type GroupStatDownflowRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Group 分组
	Group string `validate:"required,oneof=hub domain area"`

	// Where 查询条件
	// hub 直播空间
	// domain 域名
	// area 区域 中国大陆(cn)、香港(hk)、台湾(tw)、亚太(apac)、美洲(am)、欧洲/中东/非洲(emea)
	Where map[string][]string `validate:"dive,keys,oneof=hub domain area"`

	// Select 查询值
	// flow 流量,单位:byte,带宽可以从流量转换,公式为 带宽=流量*8/时间粒度,单位:bps
	Select []string `validate:"dive,eq=flow"`
}

GroupStatDownflowRequest 分组获取下行流量请求参数

type GroupStatNropRequest

type GroupStatNropRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Group 分组
	Group string `validate:"required,oneof=hub assured"`

	// Where 查询条件
	// hub 直播空间
	// assured 鉴黄结果是否确定,true或false
	Where map[string][]string `validate:"dive,keys,oneof=hub assured"`

	// Select 查询值
	// count 鉴黄次数
	Select []string `validate:"dive,eq=count"`
}

GroupStatNropRequest 分组获取直播鉴黄使用量请求参数

type GroupStatPubRequest

type GroupStatPubRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Group 分组
	Group string `validate:"required,eq=tp"`

	// Where 查询条件
	// tp 状态
	Where map[string][]string `validate:"dive,keys,eq=tp"`

	// Select 查询值
	// count 转推次数
	// duration 转推时长,单位:毫秒
	Select []string `validate:"required,dive,oneof=count duration"`
}

GroupStatPubRequest 分组获取Pub服务使用量请求参数

type GroupStatUpflowRequest

type GroupStatUpflowRequest struct {

	// 通用请求参数
	GetStatCommonRequest

	// Group 分组
	Group string `validate:"required,oneof=hub domain area"`

	// Where 查询条件
	// hub 直播空间
	// domain 域名
	// area 区域 中国大陆(cn)、香港(hk)、台湾(tw)、亚太(apac)、美洲(am)、欧洲/中东/非洲(emea)
	Where map[string][]string `validate:"dive,keys,oneof=hub domain area"`

	// Select 查询值
	// flow 流量,单位:byte,带宽可以从流量转换,公式为 带宽=流量*8/时间粒度,单位:bps
	Select []string `validate:"dive,eq=flow"`
}

GroupStatUpflowRequest 分组获取上行流量请求参数

type HubDomain

type HubDomain struct {

	// Type 域名类型
	Type string `json:"type"`

	// Domain 域名
	Domain string `json:"domain"`

	// Cname CNAME
	Cname string `json:"cname"`
}

HubDomain 直播空间下的域名简要信息

type HubHlsplusRequest

type HubHlsplusRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// HlsPlus 是否开启 hls 低延迟
	HlsPlus bool `json:"hlsPlus" validate:"-"`
}

HubHlsplusRequest 修改直播空间 hls 低延迟配置请求参数

type HubPersistenceRequest

type HubPersistenceRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// StorageBucket 存储空间
	StorageBucket string `json:"storageBucket" validate:"required"`

	// LiveDataExpireDays 存储过期时间
	// 单位:天
	LiveDataExpireDays uint `json:"liveDataExpireDays" validate:"required"`
}

HubPersistenceRequest 修改直播空间存储配置请求参数

type HubSecurityRequest

type HubSecurityRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// PublishSecurity 鉴权方式
	// 可选推流鉴权类型为
	// expiry: 限时鉴权
	// expiry_sk: 限时鉴权SK
	PublishSecurity string `json:"publishSecurity" validate:"required"`

	// PublishKey 密钥
	PublishKey string `json:"publishKey" validate:"required"`
}

HubSecurityRequest 修改直播空间推流鉴权配置请求参数

type HubSnapshotRequest

type HubSnapshotRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// SnapshotInterval 间隔时间
	// 单位:秒
	SnapshotInterval int `json:"snapshotInterval" validate:"required,gte=0"`
}

HubSnapshotRequest 修改直播空间封面配置请求参数

type Manager

type Manager struct {
	// contains filtered or unexported fields
}

Manager 提供了 Qiniu PILI Service API 相关功能

func NewManager

func NewManager(conf ManagerConfig) *Manager

NewManager 用于构建一个新的 Manager

func (*Manager) BatchGetStreamLiveStatus

BatchGetStreamLiveStatus 批量查询直播实时状态 POST /v2/hubs/<hub>/livestreams

func (*Manager) BindDomain

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

BindDomain 绑定直播域名 POST /v2/hubs/<hub>/newdomains

func (*Manager) BindVodDomain

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

BindVodDomain 绑定点播域名 POST /v2/hubs/<hub>/voddomain 点播域名用于访问直播空间对应的存储空间中的内容,例如回放、截图文件 请在存储空间控制台配置好可用域名后,绑定到直播空间 若未正确配置点播域名,可能无法正常使用回放录制、保存截图等功能

func (*Manager) GetDomainInfo

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

GetDomainInfo 查询域名信息 GET /v2/hubs/<hub>/domains/<domain>

func (*Manager) GetDomainsList

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

GetDomainsList 查询域名列表 GET /v2/hubs/<hub>/domains

func (*Manager) GetHubInfo

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

GetHubInfo 查询直播空间信息 GET /v2/hubs/<hub>

func (*Manager) GetHubList

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

GetHubList 查询直播空间列表 GET /v2/hubs

func (*Manager) GetStatCaster

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

GetStatCaster 获取导播台使用量 GET /statd/caster

func (*Manager) GetStatCodec

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

GetStatCodec 获取直播转码使用量 GET /statd/codec

func (*Manager) GetStatDownflow

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

GetStatDownflow 获取下行流量 GET /statd/downflow

func (*Manager) GetStatNrop

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

GetStatNrop 获取直播鉴黄使用量 GET /statd/nrop

func (*Manager) GetStatPub

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

GetStatPub 获取Pub服务使用量 GET /statd/pub

func (*Manager) GetStatUpflow

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

GetStatUpflow 获取上行流量 GET /statd/upflow

func (*Manager) GetStreamBaseInfo

GetStreamBaseInfo 查询直播流信息 GET v2/hubs/<hub>/streams/<EncodedStreamTitle>

func (*Manager) GetStreamHistory

GetStreamHistory 查询直播流推流记录 GET /v2/hubs/<hub>/streams/<EncodedStreamTitle>/historyactivity?start=<Start>&end=<End>

func (*Manager) GetStreamLiveStatus

GetStreamLiveStatus 查询直播流实时信息 GET v2/hubs/<hub>/streams/<EncodedStreamTitle>/live

func (*Manager) GetStreamsList

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

GetStreamsList 查询直播流列表 GET /v2/hubs/<Hub>/streams?liveonly=<true>&prefix=<Prefix>&limit=<Limit>&marker=<Marker>

func (*Manager) GroupStatCaster

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

GroupStatCaster 分组获取导播台使用量 GET /statd/caster

func (*Manager) GroupStatCodec

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

GroupStatCodec 分组获取直播转码使用量 GET /statd/codec

func (*Manager) GroupStatDownflow

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

GroupStatDownflow 分组获取下行流量 GET /statd/downflow

func (*Manager) GroupStatNrop

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

GroupStatNrop 分组获取直播鉴黄使用量 GET /statd/nrop

func (*Manager) GroupStatPub

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

GroupStatPub 分组获取Pub服务使用量 GET /statd/pub

func (*Manager) GroupStatUpflow

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

GroupStatUpflow 分组获取上行流量 GET /statd/upflow

func (*Manager) HubHlsplus

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

HubHlsplus 修改直播空间 hls 低延迟配置 POST /v2/hubs/<hub>/hlsplus

func (*Manager) HubPersistence

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

HubPersistence 修改直播空间存储配置 POST /v2/hubs/<hub>/persistence

func (*Manager) HubSecurity

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

HubSecurity 修改直播空间推流鉴权配置 POST /v2/hubs/<hub>/security

func (*Manager) HubSnapshot

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

HubSnapshot 修改直播空间封面配置 POST /v2/hubs/<hub>/snapshot

func (*Manager) SetDomainCert

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

SetDomainCert 修改域名证书配置 POST /v2/hubs/<hub>/domains/<domain>/cert

func (*Manager) SetDomainURLRewrite

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

SetDomainURLRewrite 修改域名改写规则配置 POST /v2/hubs/<hub>/domains/<domain>/urlrewrite 可根据业务需求自定义推拉流URL 改写后的URL应符合七牛的直播URL规范: <scheme>://<domain>/<hub>/<stream>[.<ext>]?<query> 举例 匹配规则: (.+)/live/(.+)/playlist.m3u8 改写规则: ${1}/hub/${2}.m3u8 请求URL: https://live.qiniu.com/live/stream01/playlist.m3u8 ; 改写URL: https://live.qiniu.com/hub/stream01.m3u8 请求URL: https://live.qiniu.com/live/stream01.m3u8 ; 与规则不匹配,不做改写

func (*Manager) StreamConverts

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

StreamConverts 修改直播流转码配置 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/converts

func (*Manager) StreamDisable

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

StreamDisable 禁用直播流 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/disabled

func (*Manager) StreamSaveas

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

StreamSaveas 录制直播回放 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/saveas

func (*Manager) StreamSnapshot

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

StreamSnapshot 保存直播截图 POST /v2/hubs/<hub>/streams/<EncodedStreamTitle>/snapshot

func (*Manager) UnbindDomain

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

UnbindDomain 解绑直播域名 DELETE /v2/hubs/<hub>/domains/<domain>

type ManagerConfig

type ManagerConfig struct {
	// AppName 用户自定义APP名称
	// 命名规则遵循 [A-Za-z0-9_\ \-\.]*
	// AppName 将在发送HTTP请求的User-Agent中体现
	// 留空即使用默认值,默认 AppName 名称为 `pili`
	AppName string

	// APIHost 访问API的地址
	// 标准账户 和 IAM(权限策略)账户 对应的 Host 不同,注意区分
	// 留空即使用默认值,默认 APIHost 为 `pili.qiniuapi.com`
	APIHost string

	// APIHTTPScheme 访问API使用的HTTP模式
	// 支持 APIHTTPScheme / APIHTTPSScheme 两种模式
	// 留空即使用默认值,默认使用 `http://`
	APIHTTPScheme string

	// AccessKey 访问密钥
	// 密钥对由 AccessKey(访问密钥) 和 SecretKey(安全密钥) 组成
	// 每一个七牛账户最多拥有两对密钥,在七牛控制台 个人中心 - 密钥管理 中获取
	// 密钥对用于API鉴权,会在HTTP请求的 Header Authorization 中携带鉴权签算信息
	// 必填参数
	AccessKey string

	// SecretKey 安全密钥
	// 必填参数
	SecretKey string

	// Transport 访问控制
	// 支持外部传入自定义RoundTripper,用于HTTP代理/Context/超时控制等逻辑
	// 留空即使用默认值,默认使用 http.DefaultTransport
	Transport http.RoundTripper
}

ManagerConfig 构建Manager的参数配置

type NropArgs

type NropArgs struct {

	// Enable 是否开启直播空间级别鉴黄功能
	Enable bool `json:"enable"`

	// Interval 截帧间隔
	// 每个流隔多久进行截帧并鉴黄,单位:秒
	Interval int `json:"interval"`

	// NotifyURL 回调 URL
	NotifyURL string `json:"notifyURL"`

	// NotifyRate 通知阈值
	// 鉴黄结果阈值表示AI模型判断当前直播画面有多大的概率涉黄
	// 当鉴黄结果阈值大于或等于通知阈值时,将发送回调信息到回调URL
	NotifyRate float64 `json:"notifyRate"`
}

NropArgs 鉴黄配置

type SetDomainCertRequest

type SetDomainCertRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Domain 域名
	Domain string `json:"-" validate:"required"`

	// CertName 证书名称
	// 需要将证书配置到七牛 CDN 服务中
	// 证书配置地址: https://portal.qiniu.com/certificate/ssl
	CertName string `json:"certName" validate:"required"`
}

SetDomainCertRequest 修改域名证书配置请求参数

type SetDomainURLRewriteRequest

type SetDomainURLRewriteRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Domain 域名
	Domain string `json:"-" validate:"required"`

	// Rules URL 改写规则列表
	Rules []DomainURLRewriteRule `json:"rules" validate:"-"`
}

SetDomainURLRewriteRequest 修改域名改写规则配置请求参数

type SignPlayURLArgs

type SignPlayURLArgs struct {

	// SecurityType 鉴权类型
	// 支持鉴权类型为
	// - tsStartMD5 时间戳防盗链开始时间限制
	// - tsExpireMD5 时间戳防盗链结束时间限制
	SecurityType string

	// Key 密钥
	Key string

	// Timestamp 时间戳
	// 单位:秒
	// 鉴权类型为 tsStartMD5 时,表示鉴权开始时间
	// 鉴权类型为 tsExpireMD5 时,表示鉴权结束时间
	Timestamp int64

	// Rule 签名规则
	// 支持魔法变量的规则,最终签算结果为所有变量的md5
	// - $(key): 密钥
	// - $(path): URL 中的 path 部分
	// - $(streamKey): URL 中的 hub/stream 部分
	// - $(streamTitle): URL 中的 stream 部分
	// - $(path_<number>): URL 中的 path 部分,<number> 表示 path 层级
	// - $(_<query>): URL 中的 query 字段,举例: key1=val,魔法变量中使用 $(_key1) 表示 val
	// 举例:
	// 配置Rule为: $(key)$(path)$(_t)
	// 魔法变量替换完成后: key/hub/streamTitle1634745600
	// 对结果进行md5计算,最终签算值为:3bc26fe6b35f5c7efab87778c5b27993
	Rule string

	// TsPart 时间戳字段
	// URL 中表示时间戳的字段名
	TsPart string

	// TsBase 时间戳进制
	// 可选进制格式为 2-36,即 2 进制到 36 进制,默认使用 16 进制
	TsBase int

	// SignPart 签名字段
	// URL 中表示 token 的字段名
	SignPart string
}

SignPlayURLArgs 播放 URL 签算(时间戳防盗链)请求参数

type SignPublishURLArgs

type SignPublishURLArgs struct {

	// SecurityType 鉴权类型
	SecurityType string

	// PublishKey 推流鉴权秘钥
	// 静态鉴权(static)、限时鉴权(expiry)、动态鉴权(dynamic) 类型必要参数
	PublishKey string

	// ExpireAt 过期时间
	// 签算URL过期时间,单位:秒
	// 限时鉴权(expiry)、限时鉴权SK(expiry_sk) 类型必要参数
	ExpireAt int64

	// Nonce 随机数
	// 要求每次推流请求的nonce值需要大于上一次推流请求的nonce值
	// 动态鉴权(dynamic) 鉴权类型必要参数
	Nonce int

	// AccessKey 访问密钥
	// 限时鉴权SK(expiry_sk) 类型必要参数
	AccessKey string

	// SecretKey 安全密钥
	// 限时鉴权SK(expiry_sk) 类型必要参数
	SecretKey string
}

SignPublishURLArgs 推流 URL 签算(直播鉴权)请求参数

type StatGroupResponse

type StatGroupResponse struct {

	// Time 时间
	Time time.Time `json:"time"`

	// Values 数据
	// 形式如:"values":{"SD":{"duration":4527162977}},其中"SD"对应Group项,"duration"对应Select项
	Values map[string]map[string]int `json:"values"`
}

StatGroupResponse 分组统计返回值

type StatResponse

type StatResponse struct {

	// Time 时间
	Time time.Time `json:"time"`

	// Values 数据
	// 形式如:"values":{"flow":4527162977},其中"flow"对应select项
	Values map[string]int `json:"values"`
}

StatResponse 统计返回值

type StreamConvertsRequest

type StreamConvertsRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Stream 流名
	Stream string `json:"-" validate:"required"`

	// Converts 转码配置
	Converts []string `json:"converts" validate:"-"`
}

StreamConvertsRequest 修改直播流转码配置请求参数

type StreamDisabledRequest

type StreamDisabledRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Stream 流名
	Stream string `json:"-" validate:"required"`

	// DisabledTill 禁用结束时间
	// Unix 时间戳,单位:秒
	// 特殊值 -1 表示永久禁用;0 解除禁用
	DisabledTill int `json:"disabledTill" validate:"-"`

	// DisablePeriodSecond 禁用时长
	// 单位:秒
	// 当 DisabledTill 为0时,DisablePeriodSecond 参数生效
	DisablePeriodSecond int `json:"disablePeriodSecond" validate:"gte=0"`
}

StreamDisabledRequest 禁用直播流请求参数

type StreamLiveStatus

type StreamLiveStatus struct {

	// StartAt 推流开始时间
	// Unix 时间戳,单位:秒
	StartAt int64 `json:"startAt"`

	// ClientIP 推流端IP
	ClientIP string `json:"clientIP"`

	// ServerIP 服务端IP
	ServerIP string `json:"serverIP"`

	// BPS 推流码率
	BPS int `json:"bps"`

	// FPS 帧率
	FPS StreamLiveStatusFPS `json:"fps"`

	// Key 流名
	Key string `json:"key,omitempty"`
}

StreamLiveStatus 直播流实时状态

type StreamLiveStatusFPS

type StreamLiveStatusFPS struct {

	// Audio 音频帧率
	Audio int `json:"audio"`

	// Video 视频帧率
	Video int `json:"video"`

	// Data metadata帧率
	Data int `json:"data"`
}

StreamLiveStatusFPS 流实时帧率

type StreamSaveasRequest

type StreamSaveasRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Stream 流名
	Stream string `json:"-" validate:"required"`

	// Start 开始时间
	// Unix 时间戳,单位:秒
	Start int64 `json:"start" validate:"gte=0"`

	// End 结束时间
	// Unix 时间戳,单位:秒,默认为当前时间
	End int64 `json:"end" validate:"gte=0"`

	// Fname 文件名
	// 为空时会随机生成一个文件名
	Fname string `json:"fname" validate:"-"`

	// Format 文件格式
	// 可选文件格式为
	// - m3u8: HLS格式,默认值
	// - flv: FLV格式,将回放切片转封装为单个flv文件,异步模式
	// - mp4: MP4格式,将回放切片转封装为单个mp4文件,异步模式
	// 异步模式下,生成回放文件需要一定时间
	Format string `json:"format" validate:"-"`

	// Pipeline 异步模式时,指定数据处理的队列
	// 可以将优先级较高的任务配置到独立的队列中进行执行
	// 参考文档:https://developer.qiniu.com/dora/kb/2500/streaming-media-queue-about-seven-cows
	Pipeline string `json:"pipeline" validate:"-"`

	// Notify 回调地址
	// 异步模式完成任务后的回调通知地址,不指定表示不做回调
	Notify string `json:"notify" validate:"-"`

	// ExpireDays 切片文件的生命周期
	// - 0: 默认值,表示修改ts文件生命周期为永久保存
	// - >0: 表示修改ts文件的的生命周期为 ExpireDays 参数值
	// - -1: 表示不修改ts文件的expire属性,可显著提升接口响应速度
	ExpireDays int `json:"expireDays" validate:"-"`

	// PersistentDeleteAfterDays 生成文件的生命周期
	// - 0: 默认值,表示生成文件(m3u8/flv/mp4)永久保存
	// - >0: 表示生成文件(m3u8/flv/mp4)的生命周期为 PersistentDeleteAfterDays 参数值
	// m3u8文件只有当ExpireDays为-1时生效
	PersistentDeleteAfterDays int `json:"persistentDeleteAfterDays" validate:"-"`

	// FirstTsType 过滤ts切片文件类型
	// 部分非标准的直播流,在推流初期缺少视频帧或音频帧,过滤功能可以剔除这部分切片
	// - 0: 默认值,不做过滤
	// - 1: 第一个ts切片需要是纯视频类型,不符合预期的ts切片将被跳过
	// - 2: 第一个ts切片需要是纯音频类型,不符合预期的ts切片将被跳过
	// - 3: 第一个ts切片需要是音视频类型,不符合预期的ts切片将被跳过
	FirstTsType byte `json:"firstTsType" validate:"-"`
}

StreamSaveasRequest 录制直播回放请求参数

type StreamSaveasResponse

type StreamSaveasResponse struct {

	// Fname 文件名
	Fname string `json:"fname"`

	// Start 开始时间
	// Unix 时间戳,单位:秒
	Start int64 `json:"start"`

	// End 结束时间
	// Unix 时间戳,单位:秒
	End int64 `json:"end"`

	// PersistentID 异步任务ID
	PersistentID string `json:"persistentID"`
}

StreamSaveasResponse 录制直播回放返回值

type StreamSnapshotRequest

type StreamSnapshotRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Stream 流名
	Stream string `json:"-" validate:"required"`

	// Time 截图时间
	// Unix 时间戳,单位:秒,不指定则为当前时间
	Time int `json:"time" validate:"-"`

	// Fname 文件名
	// 不指定系统会随机生成
	Fname string `json:"fname" validate:"-"`

	// Format 文件格式
	// 默认为jpg,支持选择jpg/png
	Format string `json:"format" validate:"-"`

	// Pipeline 异步模式时,指定数据处理的队列
	// 可以将优先级较高的任务配置到独立的队列中进行执行
	// 参考文档:https://developer.qiniu.com/dora/kb/2500/streaming-media-queue-about-seven-cows
	Pipeline string `json:"pipeline" validate:"-"`

	// Notify 回调地址
	// 若指定回调地址,则截图动作为异步模式
	Notify string `json:"notify" validate:"-"`

	// DeleteAfterDays 生命周期
	// - 0: 默认值,表示截图文件永久保存,单位:天
	DeleteAfterDays int `json:"deleteAfterDays" validate:"gte=0"`
}

StreamSnapshotRequest 保存直播截图请求参数

type StreamSnapshotResponse

type StreamSnapshotResponse struct {

	// Fname 文件名
	Fname string `json:"fname"`

	// PersistentID 异步任务ID
	PersistentID string `json:"persistentID"`
}

StreamSnapshotResponse 保存直播截图返回值

type UnbindDomainRequest

type UnbindDomainRequest struct {

	// Hub 直播空间
	Hub string `json:"-" validate:"required"`

	// Domain 域名
	Domain string `json:"-" validate:"required"`
}

UnbindDomainRequest 解绑域名请求参数

type Validator

type Validator struct {
	// contains filtered or unexported fields
}

func (*Validator) Validate

func (v *Validator) Validate(obj interface{}) error

Validate 参数验证

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL