qvs

package
v7.8.2 Latest Latest
Warning

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

Go to latest
Published: Feb 1, 2021 License: MIT Imports: 8 Imported by: 0

README

QVS Cloud Server-Side Library for Go

Features

  • 空间管理

    • 创建空间: AddNamespace(ns *NameSpace)
    • 删除空间: DeleteNamespace(nsId string)
    • 更新空间: UpdateNamespace(nsId string, ops []PatchOperation)
    • 查询空间信息: QueryNamespace(nsId string)
    • 获取空间列表: ListNamespace(offset, line int, sortBy string)
    • 禁用空间: DisableNamespace(nsId string)
    • 启用空间: EnableNamespace(nsId string)
  • 流管理

    • 创建流: AddStream(nsId string, stream *Stream)
    • 删除流: DeleteStream(nsId string, streamId string)
    • 查询流信息: QueryStream(nsId string, streamId string)
    • 更新流: UpdateStream(nsId string, streamId string, ops []PatchOperation)
    • 获取流列表: ListStream(nsId string, offset, line int, prefix, sortBy string, qType int)
    • 获取流地址
      • 动态模式: DynamicPublishPlayURL(nsId string, streamId string, route *DynamicLiveRoute)
      • 静态模式: StaticPublishPlayURL(nsId string, streamId string, route *StaticLiveRoute)
    • 禁用流: DisableStream(nsId string, streamId string)
    • 启用流: EnableStream(nsId string, streamId string)
    • 查询推流记录: QueryStreamPubhistories(nsId string, streamId string, start, end int, line, offset int)
  • 模板管理

    • 创建模板: AddTemplate(tmpl *Template)
    • 删除模板: DeleteTemplate(templId string)
    • 更新模板: UpdateTemplate(templId string, ops []PatchOperation)
    • 查询模板信息: QueryTemplate(templId string)
    • 获取模板列表: ListTemplate(offset, line int, sortBy string, templateType int, match string)
  • 录制管理相关接口

    • 查询录制记录: QueryStreamRecordHistories(nsId string, streamId string, start, end int, marker string, line int)
    • 获取截图列表: StreamsSnapshots(nsId string, streamId string, start, end int, qtype int, limit int, marker string)
    • 获取直播封面截图: QueryStreamCover(nsId string, streamId string)

Usage

package main

import (
	// ...
	"github.com/qiniu/api.v7/v7/auth"
	"github.com/qiniu/api.v7/v7/qvs"
)

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

func main() {
	// ...
	mac := auth.New(AccessKey, SecretKey)
	manager := qvs.NewManager(mac, nil)
	// ...
}

Documentation

Index

Constants

View Source
const (
	DomainPublishRTMP string = "publishRtmp"
	DomainLiveRTMP    string = "liveRtmp"
	DomainLiveHLS     string = "liveHls"
	DomainLiveHDL     string = "liveHdl"
)

Variables

View Source
var APIHTTPScheme = "http://"

APIHTTPScheme 指定了在请求 API 服务器时使用的 HTTP 模式.

View Source
var APIHost = "qvs.qiniuapi.com/v1"

APIHost 指定了 API 服务器的地址

Functions

This section is empty.

Types

type Channel added in v7.6.0

type Channel struct {
	GBID       string `json:"gbId"`
	Name       string `json:"name"`
	State      string `json:"state"`
	Vendor     string `json:"vendor"`
	LastSyncAt int64  `json:"lastSyncAt"`
}

type Device added in v7.6.0

type Device struct {
	NamespaceId     string `json:"nsId"`
	Name            string `json:"name"`
	GBId            string `json:"gbId"`
	Type            int    `json:"type"`
	Username        string `json:"username"`
	Password        string `json:"password"`
	PullIfRegister  bool   `json:"pullIfRegister"` //按需拉流
	Desc            string `json:"desc"`
	NamespaceName   string `json:"nsName"`
	State           string `json:"state"`
	Channels        int    `json:"channels"`
	Vendor          string `json:"vendor"`
	CreatedAt       int64  `json:"createdAt"`
	UpdatedAt       int64  `json:"updatedAt"`
	LastRegisterAt  int64  `json:"lastRegisterAt"`
	LastKeepaliveAt int64  `json:"lastKeepaliveAt"`
}

type DeviceChannels added in v7.6.0

type DeviceChannels struct {
	OnlineCount  int       `json:"onlineCount"`
	OfflineCount int       `json:"offlineCount"`
	Total        int       `json:"total"`
	Items        []Channel `json:"items"`
}

type DeviceVideoItems added in v7.7.0

type DeviceVideoItems struct {
	Items []deviceVideoItem `json:"items"`
}

type DomainInfo

type DomainInfo struct {
	Domain string `json:"domain"`
	Type   string `json:"type"`
	CNAME  string `json:"cname"`
	State  int    `json:"state"`
}

type DynamicLiveRoute

type DynamicLiveRoute struct {
	PublishIP    string `json:"publishIP"`    // 推流端对外IP地址
	PlayIP       string `json:"playIP"`       // 拉流端对外IP地址
	UrlExpireSec int64  `json:"urlExpireSec"` // 地址过期时间,urlExpireSec:100代表100秒后过期;  默认urlExpireSec:0,永不过期.
}

type FlowBadwidthData added in v7.7.0

type FlowBadwidthData struct {
	Time []int64 `json:"time"`
	Data struct {
		Up   []int64 `json:"up"`
		Down []int64 `json:"down"`
	} `json:"data"`
}

type M

type M map[string]interface{}

type Manager

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

Manager 代表一个 qvs 用户的客户端

func NewManager

func NewManager(mac *auth.Credentials, tr http.RoundTripper) *Manager

New 初始化 Client.

func (*Manager) AddDevice added in v7.6.0

func (manager *Manager) AddDevice(device *Device) (*Device, error)

创建设备API 参数device需要赋值字段:

NamespaceId 必填
Name
GBId
Username 必填
Password 必填
PullIfRegister
Desc
Type

func (*Manager) AddDomain

func (manager *Manager) AddDomain(nsId string, domainInfo *DomainInfo) error

添加域名API

请求参数Body: 只需填入domain和type

domainType支持四种类型 "publishRtmp":rtmp推流, "liveRtmp": rtmp播放, "liveHls": hls播放, "liveHdl": flv播放

func (*Manager) AddNamespace

func (manager *Manager) AddNamespace(ns *NameSpace) (*NameSpace, error)

创建空间API

请求参数Body: name必填 accessType必填 rtmpUrlType当accessType为"rtmp"时必填 domains当rtmpUrlType为1时必填

func (*Manager) AddStream

func (manager *Manager) AddStream(nsId string, stream *Stream) (*Stream, error)

创建流API

func (*Manager) AddTemplate

func (manager *Manager) AddTemplate(tmpl *Template) (*Template, error)

创建模板API

func (*Manager) DeleteChannel added in v7.7.0

func (manager *Manager) DeleteChannel(nsId, gbId, channelId string) error

删除通道

func (*Manager) DeleteDevice added in v7.6.0

func (manager *Manager) DeleteDevice(nsId string, gbId string) error

删除设备API

func (*Manager) DeleteDomain

func (manager *Manager) DeleteDomain(nsId string, domain string) error

删除域名API

func (*Manager) DeleteNamespace

func (manager *Manager) DeleteNamespace(nsId string) error

删除空间API

func (*Manager) DeleteSnapshots added in v7.7.0

func (manager *Manager) DeleteSnapshots(nsId, streamId string, files []string) error

删除截图

func (*Manager) DeleteStream

func (manager *Manager) DeleteStream(nsId string, streamId string) error

删除流API

func (*Manager) DeleteStreamRecordHistories added in v7.7.0

func (manager *Manager) DeleteStreamRecordHistories(nsId, streamId string, files []string) error

删除录制片段

func (*Manager) DeleteTemplate

func (manager *Manager) DeleteTemplate(templId string) error

删除模板API

func (*Manager) DisableNamespace

func (manager *Manager) DisableNamespace(nsId string) error

禁用空间API

func (*Manager) DisableStream

func (manager *Manager) DisableStream(nsId string, streamId string) error

禁用流

func (*Manager) DynamicPublishPlayURL

func (manager *Manager) DynamicPublishPlayURL(nsId string, streamId string, route *DynamicLiveRoute) (*RouteRet, error)

动态获取流地址API:推拉流IP地址计算最合适的设备端推拉流地址

func (*Manager) EnableNamespace

func (manager *Manager) EnableNamespace(nsId string) error

启用空间API

func (*Manager) EnableStream

func (manager *Manager) EnableStream(nsId string, streamId string) error

恢复流

func (*Manager) FetchCatalog added in v7.7.0

func (manager *Manager) FetchCatalog(nsId, gbId string) error

同步设备通道

func (*Manager) ListChannels added in v7.6.0

func (manager *Manager) ListChannels(nsId string, gbId string, prefix string) (*DeviceChannels, error)

查询通道列表

func (*Manager) ListDevice added in v7.6.0

func (manager *Manager) ListDevice(nsId string, offset, line int, prefix, state string, qType int) ([]Device, int64, error)

查询设备列表API

func (*Manager) ListDomain

func (manager *Manager) ListDomain(nsId string) ([]DomainInfo, error)

域名列表API

func (*Manager) ListNamespace

func (manager *Manager) ListNamespace(offset, line int, sortBy string) ([]NameSpace, int64, error)

列出空间API

func (*Manager) ListStream

func (manager *Manager) ListStream(nsId string, offset, line int, prefix, sortBy string, qType int) ([]Stream, int64, error)

查询流列表API

func (*Manager) ListTemplate

func (manager *Manager) ListTemplate(offset, line int, sortBy string, templateType int, match string) ([]Template, int64, error)

获取模版列表API

func (*Manager) OndemandSnap added in v7.7.0

func (manager *Manager) OndemandSnap(nsId, streamId string) error

按需截图

func (*Manager) QueryBandwidth added in v7.7.0

func (manager *Manager) QueryBandwidth(nsId, streamId, tu string, start, end int) (*FlowBadwidthData, error)

查询带宽数据

func (*Manager) QueryChannel added in v7.7.0

func (manager *Manager) QueryChannel(nsId, gbId, channelId string) (*Channel, error)

查询通道详情

func (*Manager) QueryDevice added in v7.6.0

func (manager *Manager) QueryDevice(nsId string, gbId string) (*Device, error)

查询设备API

func (*Manager) QueryFlow added in v7.7.0

func (manager *Manager) QueryFlow(nsId, streamId, tu string, start, end int) (*FlowBadwidthData, error)

查询流量数据

func (*Manager) QueryGBRecordHistories added in v7.7.0

func (manager *Manager) QueryGBRecordHistories(nsId, gbId, chId string, start, end int) (*DeviceVideoItems, error)

查询本地录像列表 普通设备chId可以忽略, 置为空字符串即可

func (*Manager) QueryNamespace

func (manager *Manager) QueryNamespace(nsId string) (*NameSpace, error)

查询空间信息API

func (*Manager) QueryStream

func (manager *Manager) QueryStream(nsId string, streamId string) (*Stream, error)

查询流API

func (*Manager) QueryStreamCover

func (manager *Manager) QueryStreamCover(nsId string, streamId string) (string, error)

查询流封面

func (*Manager) QueryStreamPubhistories

func (manager *Manager) QueryStreamPubhistories(nsId string, streamId string, start, end int, line, offset int) ([]StreamPublishHistory, int64, error)

查询推流历史记录

func (*Manager) QueryStreamRecordHistories

func (manager *Manager) QueryStreamRecordHistories(nsId string, streamId string, start, end int, marker string, line int, format string) ([]RecordHistory, string, error)

查询视频流的录制记录

func (*Manager) QueryTemplate

func (manager *Manager) QueryTemplate(templId string) (*Template, error)

查询模板信息API

func (*Manager) RecordClipsSaveas added in v7.7.0

func (manager *Manager) RecordClipsSaveas(nsId, streamId string, arg *saveasArgs) (*saveasReply, error)

录制视频片段合并

func (*Manager) RecordsPlayback added in v7.7.0

func (manager *Manager) RecordsPlayback(nsId, streamId string, start, end int) (string, error)

录制回放

func (*Manager) StartDevice added in v7.6.0

func (manager *Manager) StartDevice(nsId string, gbId string, channels []string) error

启动设备拉流API

func (*Manager) StartRecord added in v7.7.0

func (manager *Manager) StartRecord(nsId, streamId string) error

启动按需录制

func (*Manager) StaticPublishPlayURL

func (manager *Manager) StaticPublishPlayURL(nsId, streamId string, route *StaticLiveRoute) (string, error)

静态获取流地址API:根据domain生成推拉流地址

func (*Manager) StopDevice added in v7.6.0

func (manager *Manager) StopDevice(nsId string, gbId string, channels []string) error

停止设备拉流API

func (*Manager) StopRecord added in v7.7.0

func (manager *Manager) StopRecord(nsId, streamId string) error

停止按需录制

func (*Manager) StopStream added in v7.6.0

func (manager *Manager) StopStream(nsId string, streamId string) error

停止推流

func (*Manager) StreamsSnapshots

func (manager *Manager) StreamsSnapshots(nsId string, streamId string, start, end int, qtype int, line int, marker string) ([]byte, error)

查询截图列表

func (*Manager) UpdateDevice added in v7.6.0

func (manager *Manager) UpdateDevice(nsId string, gbId string, ops []PatchOperation) (*Device, error)

更新设备API

func (*Manager) UpdateNamespace

func (manager *Manager) UpdateNamespace(nsId string, ops []PatchOperation) (*NameSpace, error)

更新空间API

可编辑参数: name/desc/callBack/recordTemplateId/snapshotTemplateId/recordTemplateApplyAll/snapshotTemplateApplyAll

func (*Manager) UpdateStream

func (manager *Manager) UpdateStream(nsId string, streamId string, ops []PatchOperation) (*Stream, error)

更新流API

func (*Manager) UpdateTemplate

func (manager *Manager) UpdateTemplate(templId string, ops []PatchOperation) (*Template, error)

修改模板API

type NameSpace

type NameSpace struct {
	ID                     string   `json:"id"`
	Name                   string   `json:"name"`                         // 空间名称(格式"^[a-zA-Z0-9_-]{1,100}$")
	Desc                   string   `json:"desc,omitempty"`               // 空间描述
	AccessType             string   `json:"accessType"`                   // 接入类型"gb28181"或者“rtmp”
	RTMPURLType            int      `json:"rtmpUrlType"`                  // accessType为“rtmp”时,推拉流地址计算方式,1:static, 2:dynamic
	Zone                   string   `json:"zone"`                         // zone为服务区域配置项,可选项为z0, z1, z2,默认为z0. z0表示华东, z1表示华北、z2表示华南
	Domains                []string `json:"domains"`                      // 直播域名
	Callback               string   `json:"callback,omitempty""`          // 后台服务器回调URL
	Disabled               bool     `json:"disabled"`                     // 流是否被启用, false:启用,true:禁用
	RecordTemplateId       string   `jons:"recordTemplateId,omitempty"`   // 录制模版id
	SnapShotTemplateId     string   `jons:"snapshotTemplateId,omitempty"` // 截图模版id
	RecordTemplateApplyAll bool     `json:"snapshotTemplateApplyAll"`     // 空间模版是否应用到全局
	SnapTemplateApplyAll   bool     `json:"snapshotTemplateApplyAll"`     // 截图模版是否应用到全局
	HLSLowLatency          bool     `json:"hlsLowLatency"`                // HLS低延时开关
	CreatedAt              int64    `json:"createdAt,omitempty"`          // 空间创建时间
	UpdatedAt              int64    `json:"updatedAt,omitempty"`          // 空间更新时间
	DevicesCount           int64    `json:"deviceCount"`                  // 设备数量
	StreamCount            int64    `json:"streamCount"`                  // 流数量
	OnlineStreamCount      int64    `json:"onlineStreamCount"`            // 在线流数量
	DisabledStreamCount    int64    `json:"disabledStreamCount"`          // 禁用流数量

	UrlMode  int       `json:"urlMode"`  // 推拉流地址计算方式,1:static, 2:dynamic
	SipAddrs []SipAddr `json:"sipAddrs"` // sip信息数组

	OnDemandPull bool `json:"onDemandPull"` // 按需拉流开关
}

type PatchOperation

type PatchOperation struct {
	Op    string      `json:"op"`    // 更该或删除某个属性,replace:更改,delete:删除
	Key   string      `json:"key"`   // 要修改或删除的属性
	Value interface{} `json:"value"` // 要修改或删除属性的值
}

type QueryChannelsArgs added in v7.6.0

type QueryChannelsArgs struct {
	CmdArgs []string
	Prefix  string `json:"prefix"`
}

type RecordHistory

type RecordHistory struct {
	Url      string `json:"url"`
	Start    int    `json:"start"`
	End      int    `json:"end"`
	Duration int    `json:"duration"`
	Format   int    `json:"format"`
	Snap     string `json:"snap"`
	File     string `json:"file"`
}

type RoutePlayUrls

type RoutePlayUrls struct {
	Rtmp string `json:"rtmp"` // rtmp播放地址
	Flv  string `json:"flv"`  // flv播放地址
	Hls  string `json:"hls"`  // hls播放地址
}

type RouteRet

type RouteRet struct {
	PublishUrl        string        `json:"publishUrl"`        // rtmp推流地址
	PlayUrls          RoutePlayUrls `json:"playUrls"`          // 拉流URLs
	PublishUrlExpired int64         `json:"publishUrlExpired"` // 推拉流地址过期时间点(unix时间戳,单位second)
}

type SipAddr added in v7.6.0

type SipAddr struct {
	SipServerID   string   `json:"sipServerId,omitempty"`
	SipServerIP   string   `json:"sipServerIP,omitempty"`
	SipServerPort []string `json:"sipServerPort,omitempty"`
}

type StaticLiveRoute

type StaticLiveRoute struct {
	Domain       string `json:"domain"`       // 域名
	DomainType   string `json:"domainType"`   // 域名类型
	UrlExpireSec int64  `json:"urlExpireSec"` // 地址过期时间,urlExpireSec:100代表100秒后过期;  默认urlExpireSec:0,永不过期.
}

type Stream

type Stream struct {
	StreamID string `json:"streamId"`       // 流名称, 流名称在空间中唯一,可包含 字母、数字、中划线、下划线;1 ~ 100 个字符长;创建后将不可修改
	Desc     string `json:"desc,omitempty"` // 关于流的描述信息

	NamespaceId string `json:"nsId"`   // 所属的空间ID
	Namespace   string `json:"nsName"` // 所属的空间名称

	RecordTemplateId   string `json:"recordTemplateId"`   // 录制模版ID,配置流维度的录制模板
	SnapShotTemplateId string `json:"snapshotTemplateId"` // 截图模版ID,配置流维度的截图模板

	Status       bool  `json:"status"`       // 设备是否在线
	Disabled     bool  `json:"disabled"`     // 流是否被禁用
	LastPushedAt int64 `json:"lastPushedAt"` // 最后一次推流时间,0:表示没有推流

	CreatedAt int64 `json:"createdAt,omitempty"` // 流创建时间
	UpdatedAt int64 `json:"updatedAt,omitempty"` // 流更新时间

	// 以下字段只有在设备在线是才会出现
	UserCount      int    `json:"userCount"`
	ClientIp       string `json:"clientIp,omitempty"`
	AudioFrameRate int64  `json:"audioFrameRate,omitempty"`
	BitRate        int64  `json:"bitRate,omitempty"`
	VideoFrameRate int64  `json:"videoFrameRate,omitempty"`
}

type StreamPublishHistory

type StreamPublishHistory struct {
	StreamId string `json:"streamId"`
	NsId     string `json:"nsId"`
	Start    int64  `json:"start"`
	End      int64  `json:"end"`
	Duration int64  `json:"duration"`
	Snap     string `json:"snap"`
	Fmt      string `json:"format,omitempty"`
}

type Template

type Template struct {
	ID               string `json:"id"`
	Name             string `json:"name"`             // 模版名称,格式为 4 ~ 100个字符,可包含小写字母、数字、中划线、汉字)
	Desc             string `json:"desc,omitempty"`   // 模版描述
	Bucket           string `json:"bucket"`           // 模版对应的对象存储的bucket
	DeleteAfterDays  int    `json:"deleteAfterDays"`  // 存储过期时间,默认永久不过期
	TemplateType     int    `json:"templateType"`     // 模板类型,取值:0(录制模版), 1(截图模版)
	FileType         int    `json:"fileType"`         // 文件存储类型,取值:0(普通存储),1(低频存储)
	RecordType       int    `json:"recordType"`       // 录制模式, 0(不录制),1(实时录制), 2(按需录制)
	RecordFileFormat int    `json:"recordFileFormat"` // 录制文件存储格式(多选), 范围:1(001)~7(111), 从左往右的三位二进制数分别代表MP4, FLV, M3U8; 0代表不选择该格式, 1代表选择;例如:2(010)代表选择FLV格式,6(110)代表选择MP4和FLV格式,1(001)代表选择M3U8格式,7(111)代表三种格式均选择

	//record/ts/${namespaceId}/${streamId}/${startMs}-${endMs}.ts
	TSFileNameTemplate string `json:"tsFileNameTemplate"`
	//record/snap/${namespaceId}/${streamId}/${startMs}.jpg // 录制封面
	RecordSnapFileNameFmt string `json:"recordSnapFileNameTemplate"`
	RecordInterval        int    `json:"recordInterval"` //录制文件长度

	M3u8FileNameTemplate string `json:"m3u8FileNameTemplate,omitempty"` // m3u8文件命名格式
	FlvFileNameTemplate  string `json:"flvFileNameTemplate,omitempty"`  // flv文件命名格式
	Mp4FileNameTemplate  string `json:"mp4FileNameTemplate,omitempty"`  // mp4文件命名格式

	JpgOverwriteStatus bool `json:"jpgOverwriteStatus"` // 开启覆盖式截图(一般用于流封面)
	JpgSequenceStatus  bool `json:"jpgSequenceStatus"`  // 开启序列式截图
	JpgOnDemandStatus  bool `json:"jpgOnDemandStatus"`  // 开启按需截图

	// 覆盖式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/${streamId}.jpg
	JpgOverwriteFileNameTemplate string `json:"jpgOverwriteFileNameTemplate"`
	// 序列式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/${startMs}.jpg
	JpgSequenceFileNameTemplate string `json:"jpgSequenceFileNameTemplate"`
	// 按需式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/ondemand-${startMs}.jpg
	JpgOnDemandFileNameTemplate string `json:"jpgOnDemandFileNameTemplate"`
	SnapInterval                int    `json:"snapInterval"` // 序列式截图时间间隔

	CreatedAt int64  `json:"createdAt,omitempty"` // 模板创建时间
	UpdatedAt int64  `json:"updatedAt,omitempty"` // 模板更新时间
	Zone      string `json:"zone"`                // zone为服务区域配置项,可选项为z0, z1, z2,默认为z0. z0表示华东, z1表示华北、z2表示华南
}

Jump to

Keyboard shortcuts

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