1. 程式人生 > 其它 >EasyCVR新增WebRTC播放協議實現過程分享

EasyCVR新增WebRTC播放協議實現過程分享

自2020年瀏覽器的發展和相容性發生了變化,WebRTC的延時性、安全性得到了提升和保護,尤其是疫情爆發後,實時視訊的需求比之前增長了30倍,這更刺激了WebRTC產品的持續快速發展。因此我們也在EasyGBS、EasyDSS等平臺內實現了WebRTC協議的播放。

有些EasyCVR客戶需要低延遲的雲臺方案,所以我們也在EasyCVR中添加了WebRTC的播放協議。分析該需求後,我們瞭解到只要在請求播放的時候返回WebRTC的播放地址即可實現該功能。

新增如下程式碼,根據請求的播放協議,返回對應的播放地址,當前端傳遞WebRTC的時候,後端返回webrtc://開頭的播放地址,然後在前端請求播放的時候,將視訊流資料直接返回出去。

VideoCode = 0xae

ack.EasyDarwin.Body["ChannelName"] = gbschannels[0].ID

ack.EasyDarwin.Body["DeviceType"] = "GB"

ack.EasyDarwin.Body["DeviceID"] = dev

ack.EasyDarwin.Body["ChannelID"] = gbschannels[0].Index

ack.EasyDarwin.Body["RealTimeRecord"] = realtimeRecord

ack.EasyDarwin.Body["Codec"] = VideoCode

ack.EasyDarwin.Body["SnapURL"] = value.SnapURL()

//新增分析,iframe,二維碼 token,客戶可手動重新整理 更新token

shareAuth := utils.Conf().Section("base_config").Key("share_auth").MustBool(false)

if shareAuth {

if value.Token != token {

ack.EasyDarwin.Body["URL"] = ""

ack.EasyDarwin.Body["Token"] = ""

前端再次請求播放WebRTC,能夠正常播放: