golang 腾讯云直播开发日记(一)

   日期:2020-08-30     浏览:116    评论:0    
核心提示:golang 腾讯云直播日记(一)目录golang 腾讯云直播日记(一)1.腾讯业务介绍2. golang1.腾讯业务介绍2. golang

golang 腾讯云直播开发日记(一)

前言

最近要开发一个直播类的app,由于技术和资金的问题,我们选择云端服务,首先尝试的是腾讯云的直播服务。本文将介绍使用腾讯云直播时遇到的问题和解决思路及代码。

1.直播云服务

首先要做的就是单人直播,采用腾讯云的直播云服务开发。
腾讯云提供了golang的sdk ,请自行下载,要注意的是SDK 3.0 仅支持GO 1.9以上的版本 相关链接:https://github.com/TencentCloud/tencentcloud-sdk-go
在线测试API地址
https://console.cloud.tencent.com/api/explorer?Product=live&Version=2018-08-01

1.1推流

推流,指的是把采集阶段封包好的内容传输到服务器的过程,如想了解,可点击查看直播推流的介绍
如何生成推流地址?
1.腾讯自带的地址生成器
https://console.cloud.tencent.com/live/addrgenerator/addrgenerator
2.计算生成
作为后端开发当然用第二种方式,但是golang的sdk并没有提供推流拉流地址生成的接口,可能是大佬们觉得太简单了,只能自己写了。

腾讯云的推流地址格式为:

domain:你的推流域名
AppName:看需求,一般为 live
StreamName:流名字,直播房间ID
txSercet:鉴权key,MD5加密
txTime:推流地址过期日期
hex(time):指的是秒级的timestamp(时间戳)

说一下txSercet的key,key可以在域名管理找到
域名管理->点击你的推流地址->推流配置->鉴权配置(主key)

golang代码如下

//MD5
func ToMd5(str string) string {
	data := []byte(str)
	hash := md5.New()
	hash.Write(data)
	md := hash.Sum(nil)
	mdStr := hex.EncodeToString(md)
	return mdStr
}


//生成hex(time),86400为一天的秒数,即一天的有效期
func BuildTxTime() string {
	timestamp := time.Now().Unix()
	timestamp = timestamp + 86400
	baseTime := strconv.FormatInt(timestamp, 16)
	return baseTime
}

//TxSecret
func BuildTxSecret(roomId string) string {
	KEY := key  //鉴权配置的key
	streamName :=  roomId //流名字可以为房间ID
	txTime := BuildTxTime()
	return ToMd5(KEY + streamName + txTime)
}

//生成推流地址
func BuildStream(roomUUID string) string {
	txTime := BuildTxTime()
	txSecret := BuildTxSecret(roomID)
	streamName :=  roomID
	stream := "rtmp://" + PushDomain + ".livepush.myqcloud.com/live/" + streamName + "?txSecret=" + txSecret + "&txTime=" + txTime
	return stream
}

1.2拉流

拉流相对简单,也没有加密
拉流地址生成代码

func BuildPullStream(streamName string) string {
	stream := "rtmp://你的拉流地址/live/"+streamName
	return stream
}
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服