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

  • Post author:
  • Post category: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
}



版权声明:本文为weixin_45760685原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。