国标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
}
然后我们可以来看一下处理后的结果,返回的数据已经恢复正常了。