欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-04 22:59:55
...

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

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

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

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

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

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

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

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

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

问题分析

经过排查分析,我们在后台拿到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
	}

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

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

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