國標GB28181視頻流媒體平臺EasyGBS視頻直播支持H.265平臺嗎?

對於目前市面上各種不同的流媒體平臺,我們很難區分出哪個平臺具體適合哪種項目場景。比如現在比較普遍的國標GB/T2818協議,可以連接公安部的安防平臺,是很多人的選擇。我們的國標流媒體平臺EasyGBS就支持接入國標協議的攝像頭並進行管理。

TIM圖片20190930171754.png

鑑於目前H.265編碼是大趨勢,加之之前有很多用戶向我們提出EasyGBS支持H.265的訴求,所以我們也研發了EasyGBS的H.265版本(國標GB/T28181流媒體服務器EasyGBS支持H265編碼格式)。

在開發EasyGBS流媒體平臺H.265編碼功能的時候,出現了一個問題:推流庫從ps流中解析視頻編碼格式返回的數據是0。

668.png

推流庫推了PS流之後,需要從PS流中解析視頻編碼格式。然後前端頁面點擊播放,發送invite消息的時候將推過來的ps流進行解析隨後返回給前端播放器此時視頻的編碼格式。

669.png

但是前端在此時接受到的返回參數一直是0,導致服務器進行下一步操作。

670.png

問題分析

經過排查分析,我們在後臺拿到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
	}

然後我們可以來看一下處理後的結果,返回的數據已經恢復正常了。

671.png

GBS3.png

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章