国标GB28181视频流媒体平台EasyGBS视频直播支持H.265平台吗?

对于目前市面上各种不同的流媒体平台,我们很难区分出哪个平台具体适合哪种项目场景。比如现在比较普遍的国标GB/T2818协议,可以连接公安部的安防平台,是很多人的选择。我们的国标流媒体平台EasyGBS就支持接入国标协议的摄像头并进行管理。

鉴于目前H.265编码是大趋势,加之之前有很多用户向我们提出EasyGBS支持H.265的诉求,所以我们也研发了EasyGBS的H.265版本(国标GB/T28181流媒体服务器EasyGBS支持H265编码格式)。

在开发EasyGBS流媒体平台H.265编码功能的时候,出现了一个问题:推流库从ps流中解析视频编码格式返回的数据是0。

推流库推了PS流之后,需要从PS流中解析视频编码格式。然后前端页面点击播放,发送invite消息的时候将推过来的ps流进行解析随后返回给前端播放器此时视频的编码格式。

但是前端在此时接受到的返回参数一直是0,导致服务器进行下一步操作。

问题分析

经过排查分析,我们在后台拿到ps流地址分析的时机,是在给前端返回之后,所以导致设置视频编码的方式为0。

设备编码赋值代码:

timestampSec := msess.TimestampSec - msess.FirstTimestampSec
			if timestampSec < 0 {
				timestampSec = 0 - timestampSec
			}
			stream.RTPTimestampSec = int64(timestampSec)
			stream.RTPInBytes = msess.RTPInBytes
			stream.VideoCode = msess.MessTypes

处理方式,是在取值的时候进行循环等待

for {
		tempstream := uas.Server.GetStreamFromRedis(stream.StreamID)
		if tempstream != nil {
			VideoCode = tempstream.VideoCode
		}

		if VideoCode == 0 {
			time.Sleep(time.Second * 1)
			continue
		}
		break
	}

然后我们可以来看一下处理后的结果,返回的数据已经恢复正常了。

posted on 2020-06-30 10:00  EasyGBS  阅读(371)  评论(0编辑  收藏  举报