视频监控

  • 视频监控 > SDK 下载 > Go SDK

    Go SDK

    最近更新时间:2020-11-27 15:26:10

    简介

    此SDK主要帮助您快速接入七牛云的视频监控平台

    主要有如下功能:

    • 空间管理
    • 流管理
    • 设备管理
    • 模板管理
    • 录制管理
    • 数据统计管理

    开源

    安装

    $ go get -u github.com/qiniu/api.v7
    

    鉴权

    七牛 Go SDK 的所有的功能,都需要合法的授权。授权凭证的签算需要七牛账号下的一对有效的Access KeySecret Key,这对密钥可以通过如下步骤获得:

    1. 点击注册开通七牛开发者帐号
    2. 如果已有账号,直接登录七牛开发者后台,点击这里🔗查看 Access Key 和 Secret Key

    快速接入

    下面以rtmp接入方式举例,讲述接入流程,sdk接口详细说明见后面的章节

      1. 创建qvs manager
      ak := "your access key"
      sk := "your secret key"
      mac := auth.New(ak, sk)
      manager := qvs.NewManager(mac, nil)
      
      1. 创建空间

      构造好NameSpace结构体之后,调用AddNamespace创建空间

      ns := &NameSpace{
          Name:        "testNamespace",
          AccessType:  "rtmp",// 接入类型"gb28181"或者“rtmp”
          RTMPURLType: 1, // accessType为“rtmp”时,推拉流地址计算方式,1:static, 2:dynamic
          Domains:     []string{"qiniu1.com"}, // 直播域名
      }
      ns1, err := manager.AddNamespace(ns)
      
      1. 创建流

      构造好Stream结构体之后,调用AddStream创建流

      stream := &Stream{
          StreamID: "test001",
      }
      _, err = manager.AddStream(ns1.ID, stream)
      
      1. 生成推拉流地址
      ret, err := manager.DynamicPublishPlayURL("2akrarwwhi0ff", "test1", &qvs.DynamicLiveRoute{PublishIP: "127.0.0.1", PlayIP: "127.0.0.1", UrlExpireSec: 0})
      if err != nil {
          fmt.Printf("err=%s\n", err.Error())
      }
      publishUrl := ret.PublishUrl
      playUrl := ret.PlayUrls.Rtmp
      
      1. 在推流端(一般是摄像头)使用publishUrl推流
      1. 可以使用ffplay或者vlc播放playUrl的流

    空间管理

    空间管理的所有接口需要先通过aksk创建qvs manager

    ak := "your access key"
    sk := "your secret key"
    mac := auth.New(ak, sk)
    manager := qvs.NewManager(mac, nil)
    


    创建空间

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

    参数说明

    参数 说明
    ns 空间相关参数,详见NameSpace结构体说明

    NameSpace结构体说明

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

    示例

    ns := &NameSpace{
        Name:        "testNamespace",
        AccessType:  "rtmp",// 接入类型"gb28181"或者“rtmp”
        RTMPURLType: 1, // accessType为“rtmp”时,推拉流地址计算方式,1:static, 2:dynamic
        Domains:     []string{"qiniu1.com"}, // 直播域名
    }
    ns1, err := manager.AddNamespace(ns)
    


    删除空间

    func (manager *Manager) DeleteNamespace(nsId string)
    

    参数说明

    参数 说明
    nsId 空间id

    示例

    // 删除空间
    nsId := "2akrarsj8zp0w"
    manager.DeleteNamespace(nsId)
    


    更新空间

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

    参数说明

    参数 说明
    nsId 空间id
    ops 操作集,详见PatchOperation结构体说明

    PatchOperation结构体说明

    成员 类型 说明
    Op string 更该或删除某个属性,replace:更改,delete:删除
    Key string 要修改或删除的属性
    Value interface 要修改或删除属性的值

    示例

    // 更新空间
    nsId := "2akrarsj8zp0w"
    ops := []PatchOperation{
            {
                Op:    "replace",
                Key:   "name",
                Value: "testNamespace2",
            },
            {
                Op:    "replace",
                Key:   "zone",
                Value: "z1",
            },
    }
    ns3, err := manager.UpdateNamespace(nsId, ops)
    


    查询空间信息

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

    参数说明

    参数 说明
    nsId 空间id

    示例

    // 查询空间信息
    nsId := "2akrarsj8zp0w"
    manager.DeleteNamespace(nsId)
    


    获取空间列表

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

    参数说明

    参数 说明
    offset 在全部namespace中的偏移量
    line 一次返回多少条
    sortBy asc 表示升序, desc 表示降序, 默认按创建时间降序排列(可参与排序的字段有createdAt, updatedAt).asc:updatedAt表示更新时间从小到大排序, desc:updatedAt表示更新时间从大到小排序

    示例

    // 获取空间列表
    offset := 0
    line := 100
    sortBy := "asc"
    
    nss, total, err := manager.ListNamespace(offset, line, sortBy)
    


    禁用空间

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

    参数说明

    参数 说明
    nsId 空间id

    示例

    // 禁用空间
    nsId := "2akrarsj8zp0w"
    err := manager.DisableNamespace(nsId)
    


    启用空间

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

    参数说明

    参数 说明
    nsId 空间id

    示例

    // 启用空间
    nsId := "2akrarsj8zp0w"
    err := manager.EnableNamespace(nsId)
    

    流管理

    创建流

    本接口仅用于接入类型为RTMP的空间

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

    参数说明

    参数 说明
    nsId 空间id
    Stream 流相关参数结构体,详见Stream结构体说明

    Stream结构体说明

    StreamID 类型 说明
    StreamID string 流名称, 流名称在空间中唯一,可包含 字母、数字、中划线、下划线;1 ~ 100 个字符长;创建后将不可修改
    Desc string 关于流的描述信息
    NamespaceId string 所属的空间ID
    Namespace string 所属的空间名称
    RecordTemplateId string 录制模版ID,配置流维度的录制模板
    SnapShotTemplateId string 截图模版ID,配置流维度的截图模板
    Status bool 设备是否在线
    Disabled bool 流是否被禁用
    LastPushedAt int64 最后一次推流时间,0:表示没有推流
    CreatedAt int64 流创建时间
    UpdatedAt int64 流更新时间
    UserCount int 在线观看人数
    ClientIp string 推流端ip
    AudioFrameRate int64 直播流的实时音频帧率
    BitRate int64 直播流的实时码率
    VideoFrameRate int64 直播流的实时视频帧率

    示例

    // 创建流
    stream := &Stream{
            StreamID: "test003",
    }
    _, err = manager.AddStream(ns1.ID, stream)
    


    删除流

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    // 删除流
    manager.DeleteStream(ns1.ID, "test001")
    


    查询流信息

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    // 查询流信息
    manager.QueryStream(ns1.ID, "test001")
    


    更新流

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

    参数说明

    参数 说明
    nsId 空间id
    ops 操作集,详见PatchOperation结构体说明

    示例

    // 更新流
    stream := &Stream{
            StreamID: "test003",
    }
    ops := []PatchOperation{
            {
                Op:    "replace",
                Key:   "desc",
                Value: "test",
            },
    }
    stream1, err := manager.UpdateStream(ns1.ID, stream.StreamID, ops)
    


    获取流列表

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

    参数说明

    参数 说明
    nsId 空间id
    offset 在全部流中的偏移量
    line 一次返回多少条
    prefix 流ID 前缀,可以流ID 前缀进行检索查询
    sortBy asc 表示升序, desc 表示降序, 默认按创建时间降序排列(可参与排序的字段有createdAt, updatedAt, lastPushedAt). asc:updatedAt表示更新时间从小到大排序, desc:updatedAt表示更新时间从大到小排序
    qType 查询流类型, 0:全部,1:在线流,2:离线流

    示例

    // **获取流列表**
    streams, total, err := manager.ListStream(ns1.ID, 0, 2, "test", "desc:updatedAt", 0)
    


    获取动态推拉流地址

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    route 动态模式的推拉流域名相关参数,详见DynamicLiveRoute结构体说明

    DynamicLiveRoute结构体说明

    成员 类型 说明
    PublishIP string 推流端对外IP地址
    PlayIP string 拉流端对外IP地址
    UrlExpireSec int64 地址过期时间,urlExpireSec:100代表100秒后过期; 默认urlExpireSec:0,永不过期.

    RouteRet结构体说明

    成员 类型 说明
    PublishUrl string rtmp推流地址
    PlayUrls RoutePlayUrls,详见RoutePlayUrls结构体说明 拉流URLs
    PublishUrlExpired int64 推拉流地址过期时间点(unix时间戳,单位second)

    RoutePlayUrls结构体说明

    成员 类型 说明
    Rtmp string rtmp播放地址
    Flv string flv播放地址
    Hls string hls播放地址

    示例

    // 获取动态推拉流地址
    ret, err := manager.DynamicPublishPlayURL("2akrarwwhi0ff", "test1", &qvs.DynamicLiveRoute{PublishIP: "127.0.0.1", PlayIP: "127.0.0.1", UrlExpireSec: 0})
    


    获取静态推拉流地址

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    route 静态模式的推拉流域名相关参数,详见StaticLiveRoute结构体说明

    StaticLiveRoute结构体说明

    成员 类型 说明
    Domain string 域名
    DomainType string 域名类型
    UrlExpireSec int64 地址过期时间,urlExpireSec:100代表100秒后过期; 默认urlExpireSec:0,永不过期.

    示例

    // 获取静态推拉流地址
    ret, err := manager.StaticPublishPlayURL(ns1.ID, "1", &StaticLiveRoute{Domain: "qvs-publish.qiniu1.com", DomainType: DomainPublishRTMP})
    


    禁用流

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    // 禁用流
    manager.DeleteStream(ns1.ID, "test001")
    


    启用流

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    // 启用流
    manager.DeleteStream(ns1.ID, "test001")
    


    停用流

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    // 停用流
    manager.StopStream(ns1.ID, "test001")
    


    查询推流记录

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    start 推流开始时间(unix timestamp in second)
    end 推流结束时间(unix timestamp in second)
    line 一次返回多少条
    offset 在全部流中的偏移量

    示例

    // 查询推流记录
    start := 1587975463
    end := 1587976463
    offset := 0
    line := 1
    manager.DeleteStream(ns1.ID, "test001", start, end, line, offset)
    

    设备管理

    创建设备

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

    参数说明

    参数 说明
    Device 设备相关参数,详见Device结构体说明

    Device结构体说明

    成员 类型 说明
    NamespaceId string 所属的空间ID
    Name string 设备名称
    GBId string 设备国标ID
    Type int 设备类型,取值1(摄像头), 2(平台)
    Username string 用户名
    Password string 密码
    PullIfRegister bool 注册成功后启动拉流, 默认关闭
    Desc string 设备描述
    NamespaceName string 所属的空间名称
    State string 状态(offline: 离线, online: 在线, notReg: 未注册, locked: 锁定)
    Channels int 设备通道数
    Vendor string 厂商
    CreatedAt int64 创建时间,Unix时间戳,秒
    UpdatedAt int64 更新时间,Unix时间戳,秒
    LastRegisterAt int64 上一次注册时间,Unix时间戳,秒
    LastKeepaliveAt int64 上一次心跳时间,Unix时间戳,秒

    示例

    // 创建设备
    device := &Device {
        Name:               "device1",
        Desc:               "test gb28181",
        Username:           "username",
        Password:           "password"
    }
    dev, err := manager.AddDevice(device)
    

    删除设备

    DeleteDevice(nsId string, gbId string) error
    

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id

    示例

    // 删除设备
    dev, err := manager.DeleteDevice(ns1.ID, "device1")
    

    更新设备

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标Id
    ops 操作集,详见PatchOperation结构体说明

    示例

    // 更新设备
    ops := []PatchOperation{
        {
            Op:    "replace",
            Key:   "desc",
            Value: "test",
        },
    }
    dev, err := manager.UpdateDevice(ns1.ID, dev.gbId, ops)
    

    查询设备信息

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id

    示例

    // 删除设备
    nsId := "testNsId"
    gbId := "testGbId"
    dev, err := manager.QueryDevice(nsId, gbId)
    

    查询设备列表

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

    参数说明

    参数 说明
    nsId 空间id
    offset 在全部Device中的偏移量
    line 一次返回多少条
    prefix 可以通过gbid前缀进行检索查询
    state 按设备状态查询,offline: 离线, online: 在线, notReg: 未注册, locked: 锁定
    qtype 按设备类型查询,0:全部, 1:摄像头, 2:平台

    示例

    // 查询设备列表
    nsId := "testNsId"
    gbId := "testGbId"
    dev, err := manager.ListDevice(ns1.ID, 0, 2, "302", "", 0)
    

    查询通道列表

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id
    prefix 通道国标ID前缀

    示例

    // 删除设备
    nsId := "testNsId"
    gbId := "testGbId"
    prefix := "320"
    dev, err := manager.ListChannels(nsId, gbId, prefix)
    

    启动设备拉流

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id
    channels 平台设备指定需要启动的通道国标ID(为空表示启动平台下的所有设备)

    示例

    // 启动设备拉流
    nsId := "testNsId"
    gbId := "testGbId"
    channels := []string{"31011500991320000028"}
    dev, err := manager.StartDevice(nsId, gbId, channels)
    

    停止设备拉流

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id
    channels 平台设备指定需要结束的通道国标ID(为空表示停止平台下的所有设备)

    示例

    // 停止设备拉流
    nsId := "testNsId"
    gbId := "testGbId"
    channels := []string{"31011500991320000028"}
    dev, err := manager.StartDevice(nsId, gbId, channels)
    


    同步设备通道

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id

    示例

    err = c.FetchCatalog("3nm4x0vyz7xlu", "31011500991180000270")
    


    查询通道详情

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id
    channelId 通道id

    示例

    channel, err := c.QueryChannel("3nm4x0vyz7xlu", "31011500991180000270", "31011500991180000135")
    


    删除通道

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id
    channelId 通道id

    示例

    err = c.DeleteChannel("3nm4x0vyz7xlu", "31011500991180000270", "31011500991180000135")
    


    查询本地录像列表

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

    参数说明

    参数 说明
    nsId 空间id
    gbId 国标id
    channelId 网关设备时为通道ID(普通设备可以忽略)
    start 查询开始时间(unix时间戳,单位为秒)
    end 查询结束时间(unix时间戳,单位为秒)

    示例

    ret, err := c.QueryGBRecordHistories("3nm4x0vyz7xlu", "31011500991180000270", "34020000001310000020", 1604817540, 1604903940)
    

    模板管理

    创建模板

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

    参数说明

    参数 说明
    Tmpl 模板相关参数,详见Template结构体说明

    Template结构体说明

    成员 类型 说明
    ID string 模板id
    Name string 模版名称,格式为 4 ~ 100个字符,可包含小写字母、数字、中划线、汉字
    Desc string 模版描述
    Bucket string 模版对应的对象存储的bucket
    DeleteAfterDays int 储过期时间,默认永久不过期
    TemplateType int 板类型,取值:0(录制模版), 1(截图模版)
    FileType int 件存储类型,取值:0(普通存储),1(低频存储)
    RecordType int 录制模式, 0(不录制),1(实时录制), 2(按需录制)
    RecordFileFormat int 录制文件存储格式(多选), 范围:1(001)~7(111), 从左往右的三位二进制数分别代表MP4, FLV, M3U8; 0代表不选择该格式, 1代表选择;例如:2(010)代表选择FLV格式,6(110)代表选择MP4和FLV格式,1(001)代表选择M3U8格式,7(111)代表三种格式均选择
    TSFileNameTemplate string ts文件名模板,例如:record/ts/${namespaceId}/${streamId}/${startMs}-${endMs}.ts
    RecordSnapFileNameFmt string 截图文件名格式,例如:/record/snap/${namespaceId}/${streamId}/${startMs}.jpg
    RecordInterval int 录制文件长度
    M3u8FileNameTemplate string m3u8文件命名格式
    FLVFileNameTemplate string flv文件命名格式
    MP4FileNameTemplate string mp4文件命名格式
    JpgOverwriteStatus bool 开启覆盖式截图(一般用于流封面)
    JpgSequenceStatus bool 开启序列式截图
    JpgOnDemandStatus bool 开启按需截图
    JpgOverwriteFileNameTemplate string 覆盖式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/${streamId}.jpg
    JpgSequenceFileNameTemplate string 序列式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/${startMs}.jpg
    JpgOnDemandFileNameTemplate string 按需式截图文件命名格式:snapshot/jpg/${namespaceId}/${streamId}/ondemand-${startMs}.jpg
    SnapInterval int 序列式截图时间间隔
    CreatedAt int64 模板创建时间
    UpdatedAt int64 模板更新时间
    Zone string one为服务区域配置项,可选项为z0, z1, z2,默认为z0. z0表示华东, z1表示华北、z2表示华南

    示例

    // 创建模板
    tmpl := &Template{
            Name:               "test001",
            Bucket:             "xxxx",
            TemplateType:       1,
            JpgOverwriteStatus: true,
            RecordType:         2,
            Zone:               "z0",
            RecordFileFormat:   1,
    }
    tmpl1, err := c.AddTemplate(tmpl)
    


    删除模板

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

    参数说明

    参数 说明
    templId 模板id

    示例

    // 删除模板
    manager.DeleteTemplate(tmpl1.ID)
    


    更新模板

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

    参数说明

    参数 说明
    templId 模板id
    ops 操作集,详见#PatchOperation结构体说明

    示例

    // 更新模板
    ps := []PatchOperation{
            {
                Op:    "replace",
                Key:   "name",
                Value: "test002",
            },
            {
                Op:    "replace",
                Key:   "zone",
                Value: "z1",
            },
    }
    tmpl2, err := manager.UpdateTemplate(tmpl1.ID, ops)
    


    查询模板信息

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

    参数说明

    参数 说明
    templId 模板id

    示例

    // 查询模板信息
    tmpl2, err := manager.QueryTemplate("2akrarsl22iil")
    


    获取模板列表

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

    参数说明

    参数 说明
    offset 在全部templates中的偏移量
    line 一次返回多少条
    sortBy 默认按创建时间降序排列, sortBy由"asc/desc"和可参与排序的字段组成, 其中 asc 表示升序, desc 表示降序, 可参与排序的字段有createdAt, updatedAt. asc:updatedAt表示更新时间从小到大排序, desc:updatedAt表示更新时间从大到小排序
    templateType 模板类型,取值:0(录制模版), 1(截图模版)
    match 模糊匹配查询(模版名称包含match串时返回)

    示例

    // 获取模板列表
    nss, total, err := c.ListTemplate(0, 2, "asc:updatedA", 1, "")
    

    录制管理

    查询录制记录

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    start 查询开始时间(unix时间戳,单位为秒)
    end 查询结束时间(unix时间戳,单位为秒)
    marker 上次返回的marker值
    line 一次返回多少条
    format 查询录制格式,""为查询所有格式视频

    示例

    // 查询录制记录
    nsId := "2akrarsj8zp0w"
    streamId := "test01"
    start := 1587975463
    end := 1587976463
    marker := ""
    line := 10
    format := ""
    recordHistory, err := manager.QueryStreamRecordHistories(nsId, streamId, start, end, marker, line, format)
    


    获取截图列表

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    start 查询开始时间(unix时间戳,单位为秒)
    end 查询结束时间(unix时间戳,单位为秒)
    qtype 1:实时截图对应的图片列表
    line 限定返回截图的个数,只能输入1-100的整数,不指定默认返回30个

    示例

    // 查询录制记录
    nsId := "2akrarsj8zp0w"
    streamId := "test01"
    start := 1587975463
    end := 1587976463
    marker := ""
    line := 10
    qtype := 1
    recordHistory, err := manager.StreamsSnapshots(nsId, streamId, start, end, qtype, line)
    


    获取直播封面截图

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    // 获取直播封面截图
    nsId := "2akrarsj8zp0w"
    streamId := "test01"
    cover, err := manager.QueryStreamCover(nsId, streamId)
    


    按需截图

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    err := c.OndemandSnap("2xenzw5o81ods", "31011500991320000356")
    


    删除截图

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    files 需要删除的文件列表

    示例

    err = c.DeleteSnapshots("2xenzw5o81ods", "31011500991320000356", []string{"test.jpg"})
    


    启动按需录制

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    err = c.StartRecord("2xenzw5o81ods", "31011500991320000356")
    


    停止按需录制

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id

    示例

    err = c.StopRecord("2xenzw5o81ods", "31011500991320000356")
    


    删除录制片段

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    files 需要删除的文件列表(从查询录制记录file 字段获取文件名)

    示例

    err = c.DeleteStreamRecordHistories("2xenzw5o81ods", "31011500991320000356", []string{"record/2xenzw5o81ods/31011500991320000356/1604989846152-1604990735281-852640.m3u8"})
    


    录制视频片段合并

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流id
    arg 详见saveasArgs结构体说明

    saveasArgs结构体说明

    成员 类型 说明
    fname string 保存的文件名(需要带上文件格式后缀),不指定系统会随机生成
    format string 保存的文件格式,可以为m3u8, mp4或者flv
    start int 查询开始时间(unix时间戳,单位为秒)
    end int 查询结束时间(unix时间戳,单位为秒)
    deleteTs bool 在不生成m3u8格式文件时是否删除对应的ts文件
    pipeline string 数据处理的私有队列,不指定则使用公共队列
    notifyUrl string 保存成功回调通知地址,不指定则不通知
    deleteAfterDays int 文件过期时间,默认和录制模版中的设置保持一致

    saveasReply结构体说明

    成员 类型 说明
    fname string 表示保存后在存储空间里的文件名。使用存储空间的下载域名可以访问这文件
    persistentId string 持久化异步处理任务ID,异步模式才会返回该字段,可以通过该字段查询转码进度
    bucket string 文件存储的bucket
    duration int 合并后文件的时长(单位为秒)

    示例

    ret, err := c.RecordClipsSaveas("2xenzw5o81ods", "31011500991320000356", &saveasArgs{
            Format: "m3u8",
            Start:  1604989846,
            End:    1604990735,
        })
    


    录制回放

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流ID
    start 查询开始时间(unix时间戳,单位为秒)
    end 查询结束时间(unix时间戳,单位为秒)

    数据统计管理

    查询带宽数据

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流ID
    start 年月日模式(20191001)或者年月日时分秒模式(20201012204005)
    end 年月日模式(20191002)或者年月日时分秒模式(20201012204005)
    tu 时间粒度 可以是 5min, hour, day

    示例

    ret, err = c.QueryBandwidth("", "", "hour", 20200901, 20200902)
    


    查询流量数据

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

    参数说明

    参数 说明
    nsId 空间id
    streamId 流ID
    start 年月日模式(20191001)或者年月日时分秒模式(20201012204005)
    end 年月日模式(20191002)或者年月日时分秒模式(20201012204005)
    tu 时间粒度 可以是 5min, hour, day

    示例

    ret, err := c.QueryFlow("", "", "5min", 20200901, 20200902)
    
    以上内容是否对您有帮助?
  • Qvm free helper
    Close