文档章节

aliyun-go-live-sdk

Cbping
 Cbping
发布于 2017/02/15 09:57
字数 1102
阅读 48
收藏 1

详细信息请看

github:https://github.com/BPing/aliyun-live-go-sdk

Build Status Coverage Status Go Report Card

阿里云直播 golang SDK

阿里云视频直播接口文档

快速开始

package main

import (
    "github.com/BPing/aliyun-live-go-sdk/aliyun"
    "github.com/BPing/aliyun-live-go-sdk/device/live"
    "github.com/BPing/aliyun-live-go-sdk/util"
    "time"
    "fmt"
)

const (
    AccessKeyId = "<Yours' Id>"
    AccessKeySecret = "<...>"
)

func main() {
    cert := aliyun.NewCredentials(AccessKeyId, AccessKeySecret)
    live := live.NewLive(cert, "<Yours' CDN>", "app-name",nil).SetDebug(true)
    resp := make(map[string]interface{})
    live.StreamsPublishList(time.Now().Add(-time.Hour * 12), time.Now(), &resp)
    fmt.Println(resp)
}

构建安装

go get:

go get github.com/BPing/aliyun-live-go-sdk

文档

Example

直播(Live)

    方法名以"WithApp"结尾代表可以更改请求中  "应用名字(AppName)",
    否则按默认的(初始化时设置的AppName)。
    如果为空,代表忽略参数AppName
    cert := client.NewCredentials(AccessKeyId, AccessKeySecret)
    liveM := live.NewLive(cert, DomainName, AppName, nil).SetDebug(true)
  • 获取流列表
    resp := make(map[string]interface{})
    liveM.StreamsPublishList(time.Now().Add(-time.Hour * 12), time.Now(), &resp)
    fmt.Println(resp)
    // @appname 应用名 为空时,忽略此参数
    resp := make(map[string]interface{})
    liveM.StreamsPublishListWithApp(AppName,time.Now().Add(-time.Hour * 12), time.Now(), &resp)
    fmt.Println(resp)
  • 获取黑名单
    resp = make(map[string]interface{})
    err = liveM.StreamsBlockList(&resp)
    fmt.Println(err, resp)
  • 获取流的在线人数
    resp1 := live.OnlineInfoResponse{}
    err := liveM.StreamOnlineUserNum("video-name", &resp1)
    fmt.Println(err, resp1)  
   // @appname 应用名 为空时,忽略此参数
    resp1 := live.OnlineInfoResponse{}
    err := liveM.StreamOnlineUserNumWithApp(AppName,"video-name", &resp1)
    fmt.Println(err, resp1)  
  • 获取控制历史
    resp = make(map[string]interface{})
    err = liveM.StreamsControlHistory(time.Now().Add(-time.Hour * 12), time.Now(), &resp)
    //err = liveM.StreamsControlHistoryWithApp(AppName,time.Now().Add(-time.Hour * 12), time.Now(), &resp)
    fmt.Println(err, resp)
  • 禁止
    resp = make(map[string]interface{})
    err = liveM.ForbidLiveStreamWithPublisher("video-name", nil, &resp)
    fmt.Println(err, resp)
  • 恢复
    resp = make(map[string]interface{})
    err = liveM.ResumeLiveStreamWithPublisher("video-name", &resp)
    fmt.Println(err, resp)

录制(请看文档)

截图(2017-01-18)

  • 添加截图配置
	oss := live.OssInfo{
		OssBucket:       OssBucket,
		OssEndpoint:     OssEndpoint,
		OssObject:       OssObject,
		OssObjectPrefix: OssObjectPrefix,
	} 
	config:=live.SnapshotConfig{
		OssInfo:oss,
		TimeInterval       : 5,
		OverwriteOssObject  : "{AppName}/{StreamName}.jpg",
	}
  	resp := make(map[string]interface{})
  	err:=liveM.AddLiveAppSnapshotConfig(config,&resp)
  	fmt.Println(err, resp)
  • 更新截图配置
	config.SequenceOssObject="{AppName}/{StreamName}.jpg"
	resp = make(map[string]interface{})
	err=liveM.UpdateLiveAppSnapshotConfig(config,&resp)
	fmt.Println(err, resp)
  • 查询域名截图配置
	param:=live.LiveSnapshotParam{
    		PageNum:1,
    		PageSize:10,
    		Order:"asc",
    	}
    	resp = make(map[string]interface{})
    	err=liveM.LiveSnapshotConfig(param,&resp)
    	fmt.Println(err, resp)
  • 查询截图信息
	resp = make(map[string]interface{})
	err=liveM.LiveStreamSnapshotInfo("test-video-name1",time.Now().Add(-time.Hour*24*20), time.Now(),10,&resp)
	fmt.Println(err, resp)
  • 删除截图配置
	resp = make(map[string]interface{})
	err=liveM.DeleteLiveAppSnapshotConfig(&resp)
	fmt.Println(err, resp)

转码(2017-01-19)

  • 添加转码配置
	resp := make(map[string]interface{})
	err:=liveM.AddLiveStreamTranscode("a","no","no",&resp)
	fmt.Println(err, resp)
  • 查询转码配置信息
	resp = make(map[string]interface{})
	err=liveM.LiveStreamTranscodeInfo(&resp)
	fmt.Println(err, resp))
  • 删除转码配置
	resp = make(map[string]interface{})
	err=liveM.DeleteLiveStreamTranscode("a",&resp)
	fmt.Println(err, resp)

混流(2017-01-19)

  • 开始混流操作
	err=liveM.StartMixStreamsService(...)
  • 结束混流操作
	err=liveM.StopMixStreamsService(...)

拉流(2017-10-12)

  • 添加拉流信息
	err=liveM.AddLivePullStreamInfoConfig(...)
  • 删除拉流信息
	err=liveM.DeleteLivePullStreamInfoConfig(...)
  • 查询域名下拉流配置信息
	err=liveM.DescribeLivePullStreamConfig(...)

连麦((2017-10-12)

  • 添加连麦配置
	err=liveM.AddLiveMixConfig(...)
  • 查询连麦配置
	err=liveM.DescribeLiveMixConfig(...)
  • 删除连麦配置
	err=liveM.DeleteLiveMixConfig(...)
  • 开启多人连麦服务
	err=liveM.StartMultipleStreamMixService(...)
  • 停止多人连麦服务
	err=liveM.StopMultipleStreamMixService(...)
  • 往主流添加一路流
	err=liveM.AddMultipleStreamMixService(...)
  • 从主流移除一路流
	err=liveM.RemoveMultipleStreamMixService(...)
  • 添加连麦回调配置
	err=liveM.AddLiveMixNotifyConfig(...)
  • 查询连麦回调配置
	err=liveM.DescribeLiveMixNotifyConfig(...)
  • 删除连麦回调配置
	err=liveM.DeleteLiveMixNotifyConfig(...)
  • 更新连麦回调配置
	err=liveM.UpdateLiveMixNotifyConfig(...)

状态通知((2017-10-12)

  • 设置回调链接
	err=liveM.SetStreamsNotifyUrlConfig(...)
  • 删除推流回调配置
	err=liveM.DeleteLiveStreamsNotifyUrlConfig(...)
  • 查询推流回调配置
	err=liveM.StreamsNotifyUrlConfig(...)

流(Stream)

  //如果 streamCert 为空的话,则代表不开启直播流鉴权
   cert := client.NewCredentials(AccessKeyId, AccessKeySecret)
   streamCert := live.NewStreamCredentials(PrivateKey, live.DefaultStreamTimeout)
   liveM := live.NewLive(cert, DomainName, AppName, streamCert)
  // GetStream 获取直播流
  // @describe 每一次都生成新的流实例,不检查流名的唯一性,并且同一个名字会生成不同的实例的,
  //          所以,使用时候,请自行确保流名的唯一性
   stream := liveM.GetStream("video-name")
  • 获取RTMP推流地址
    // RTMP 推流地址
    // 如果开启了直播流鉴权,签名失效后,会重新生成新的有效的推流地址
    stream.RtmpPublishUrl()
  • RTMP 直播播放地址
    url:=stream.RtmpLiveUrls()
  • HLS 直播播放地址
    url:=stream.HlsLiveUrls()
  • FLV 直播播放地址
    url:=stream.HttpFlvLiveUrls()
  • 获取在线人数
    num:=stream.OnlineUserNum()
  • 是否在线
    isOnline:=stream.Online()
  • 是否被禁止
    isBlocked:=stream.Blocked()
  • 获取直播流的帧率和码率
    // type FrameRateAndBitRateInfos struct {
    //	FrameRateAndBitRateInfo []FrameRateAndBitRateInfo
    //}
    //
    //// 各直播流的帧率/码率信息
    //type FrameRateAndBitRateInfo struct {
    //	StreamUrl      string // 直播流的URL
    //	VideoFrameRate int    // 直播流的视频帧率
    //	AudioFrameRate int    // 直播流的音频帧率
    //	BitRate        int    // 直播流的码率
    //}  
    frameRateAndBitRateInfo,err:=stream.FrameRateAndBitRateData()
  • 获取截图信息
// 查询截图信息
    // type StreamSnapshotInfoResponse struct {
    //    client.Response
    //	  LiveStreamSnapshotInfoList struct {
    //		StreamSnapshotInfo []StreamSnapshotInfo `json:"StreamSnapshotInfo" xml:"StreamSnapshotInfo"`
    //	 } `json:"LiveStreamSnapshotInfoList" xml:"LiveStreamSnapshotInfoList"` //截图内容列表,没有则返回空数组
    //    NextStartTime              string                //
    // }
    streamSnapshotInfo,err:=stream.SnapshotInfo(time.Now().Add(-time.Hour * 12), time.Now(), 10)

License

采用 Apache License, Version 2.0许可证授权原则。

© 著作权归作者所有

共有 人打赏支持
Cbping
粉丝 2
博文 11
码字总数 5190
作品 0
广州
后端工程师
私信 提问
Cbping/aliyun-live-go-sdk

aliyun-live-go-sdk 阿里云直播 golang SDK 阿里云视频直播接口文档 快速开始 package main import ( ) const ( ) func main() { } 构建安装 go get: go get github.com/BPing/aliyun-live-......

Cbping
2017/06/01
0
0
.Net 安装aliyun-oss

NuGet安装 如果您的Visual Studio没有安装NuGet,请先安装 NuGet。 安装好NuGet后,先在Visual Studio中新建或者打开已有的项目,然后选择工具 > NuGet程序包管理器 > 管理解决方案的NuGet程...

桃子红了呐
2018/01/07
0
0
【干货索引】阿里云大数据计算服务MaxCompute与生态系统的融合

摘要: MaxCompute大家都不陌生,之前产品名称叫ODPS,之后随国际化而更名。从支持阿里集团内部99%数据业务到计算能力对外输出,帮助政府、互联网公司、金融等进行大数据项目服务,使得数据变...

阿里云云栖社区
2018/01/12
0
0
从AWS S3换成阿里云OSS存储所踩的坑

因业务需要,AWS S3 不能使用了,要换成阿里云OSS存储和下载。简单作以记录,以作备忘。 1.参照https://help.aliyun.com/product/31815.html?spm=5176.2020520105.146.d500.30285e77DhksTQ ...

wqhlmark64
2017/12/22
0
0
BeiDao而驰/PnJ.Aliyun

Aliyun OTS SDK For .Net(Pnj.Aliyun) 概述 本SDK适用于阿里云开放结构化数据服务OTS的API,目前已实现OTS的所有接口(API版本号2014-08-08): 本SDK完全支持开放结构化数据服务OTS。 对应Cli...

BeiDao而驰
2015/11/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

精读《论语》读后感作文3600字

精读《论语》读后感作文3600字: 学而篇第一:子曰:“学而时习之,不亦说乎?有朋友自远方来,不亦悦乎?人不知,而不愠,不亦君子乎? 朱熹解:即学而又时时习之,则学者熟,而衷心喜悦,其...

原创小博客
31分钟前
0
0
CPU内存结构

开局一张图 由于CPU频率太快了,为解决直接读取内存的数据上的延迟,在CPU和内存之间,存在3级缓存。 CPU在解决和缓存不一致上采用两种方式: 缓存一致性协议 总线锁机制 CPU CPU的一个时钟周...

春哥大魔王的博客
34分钟前
1
0
记一次centos 7内核升级事故

情景 公司做等保3测评,在进行系统漏洞检测时发现内核存在漏洞,需要进行升级。 名称 版本 升级前内核 CentOS Linux (3.10.0-327.el7.x86_64) 7 (Core) 升级后内核 CentOS Linux (3.10.0-957...

阿dai
59分钟前
8
0
PowerDesigner操作

1.去掉生成DDL里的注释 Database -> Edit Current DBMS -> Script -> Syntax -> BlockComment,去掉BlockComment里面的value内容。...

了凡川
今天
3
0
Django集成Markdown编辑器【附源码】

专注内容写作的你一定不要错过markdown 简单介绍 markdown是一种标记语言,通过简单的标记语法可以使普通的文本内容具有一定的格式,使用非常简单,学习成本极低 目前各大Blog平台都已支持m...

运维咖啡吧
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部