Windows下Net6開源akstream項目vs2022調試GB28181協議對接攝像頭全流程

一、背景介紹

筆者經歷多個項目對接攝像頭需求,不同項目具體要求又有所不同,碰到的攝像頭對接開發問題,整理記錄。此篇主要用於記錄備用及給有緣人提供解決思路等。

1.   同一局域網對接(海康攝像頭),如果有專線這種方式對接也是最簡單的。

2.   互聯網基於螢石雲協議對接(支持螢石協議的),免費的有併發3個限制。

3.   互聯網基於國標協議,解決內網傳統問題。有技術難度,技術棧涉及較多。

主要介紹第三種情況GB28181協議對接開發,前面兩種簡單帶過。海康、大華、宇視等主流攝像頭都支持此協議,所以開發對接後市面上大部分攝像頭都可以接入。

二、同網段或螢石協議對接

有互聯網固定ip的參考同網段開發解決方案。

1.以海康爲例局域網內可以通過對接攝像頭sdk,根據攝像頭對應web版sdk直接對接rtmp播放。Sdk有對應demo,輸入攝像頭ip,端口,用戶名,密碼登錄可以測試。此方式有併發限制,這邊測試的大概是10個,主要還要看關閉頁面後是否能夠及時回收佔用資源。頁面頻繁調用同一攝像頭會造成連不上攝像頭,暫時沒找到好的解決方案,有時候還需要重啓一下攝像頭才能訪問。

 

這種模式基於互聯網網絡訪問時就很難訪問到了,如果項目攝像頭與應用同在一個局域網內可以考慮使用最新的無插件sdk,“WEB無插件開發包 V3.2” 地址https://open.hikvision.com/fileserver/resourcedocsonline/Web3.2_控件開發包編程指南_20201102163345.pdf。攝像頭與應用服務器不在同一ip段時要注意是否可以互相訪問,建議用交換機。大華、宇視等自行查找官網解決方案。

2.螢石協議對接,根據appKey和secret獲取accessToken接口,通過設備序列號、通道號獲取單臺設備的播放地址信息,無法獲取永久有效期播放地址。官方對接文檔:

https://open.ys7.com/doc/zh/book/index/user.html

螢石協議對接時注意多看官方文檔。

優勢:基於螢石可以快速開發對接,也能兼容到大部分攝像頭,最優的還是海康的設備。

劣勢:併發限制;一個開發號最多同時3個併發,如3個人訪問同一畫面,或一個人最多訪問3個畫面。個人版:設備接入能力: 10臺;接口每日調用上限: 3併發/應用。不差錢的企業可以選擇月套餐。

 

 

 

三、GB28181協議簡單介紹

GB28181協議指的是國家標準GB/T 28181—2016《公共安全視頻監控聯網系統信息傳輸、交換、控制技術要求》。

GB28181協議會話通道實際上使用的是SIP協議,並且在SIP協議的基礎之上做了些私有化處理。SIP是一個由IETF MMUSIC工作組開發的協議,作爲標準被提議用於創建,修改和終止包括視頻,語音,即時通信,在線遊戲和虛擬現實等多種多媒體元素在內的交互式用戶會話。

SIP中一個比較重要的概念是用戶代理(User Agent),指的是一個SIP邏輯網絡端點,用於創建、發送、接收SIP消息並管理一個SIP會話。

SIP用戶代理又可分爲用戶代理客戶端UAC(User Agent Client)和用戶代理服務端UAS(User Agent Server)。UAC創建併發送SIP請求,UAS接收處理SIP請求,發送SIP響應。

SIP協議會與許多其它的協議協同工作,如SIP報文內容發送會話描述協議(Session Description Protocol,SDP),SDP協議描述了會話所使用流媒體細節,如:使用哪個IP端口,採用哪種編解碼器等等。

SIP的一個典型用途是:SIP會話傳輸一些簡單的經過報文的實時傳輸協議流,RTP本身才是語音或視頻的載體。在GB28181協議中,聯網系統在進行視音頻傳輸及控制時應建立兩個傳輸通道: 會話通道和媒體流通道。會話通道用於在設備之間建立會話並傳輸系統控制命令; 媒體流通道用於傳輸視音頻數據, 經過壓縮編碼的視音頻流採用流媒體協議RTP/RTCP傳輸。會話通道中,註冊、實時視音頻點播、歷史視音頻的回放等應用的會話控制採用SIP協議IETF RFC3261中規定的REGISTER、INVITE等請求和響應方法實現, 歷史視音頻回放控制採用SIP擴展協議IETF RFC29765規定的INFO方法實現,前端設備控制、信息查詢、報警事件通知和分發等應用的會話控制採用SIP擴展協議IETF RFC34287規定的MESSAGE方法實現。

 

1.該標準規定了公共安全視頻監控聯網系統的互聯結構, 傳輸、交換、控制的基本要求和安全性要求, 以及控制、傳輸流程和協議接口等技術要求,是視頻監控領域的國家標準。GB28181協議信令層面使用的是SIP(Session Initiation Protocol)協議。

2.流媒體傳輸層面使用的是實時傳輸協議(Real-time Transport Protocol,RTP)協議。

3.因此可以理解爲GB28181是在國際通用標準的基礎之上進行了私有化定製以滿足視頻監控聯網系統互聯傳輸的標準化需求。

4.由於本次主要是要介紹開源項目akstream,相關協議底層對接這裏不再做過多講述,感興趣的可以看開源項目底層處理代碼;更多GB28181協議知識請自行學習,註冊、保活等,學習參考:https://zhuanlan.zhihu.com/p/545703291

注意:GB28181要求傳輸的視頻流格式爲PS流,或者H264流,或者MP4格式。不同的模式視頻直播延時時間不同,rtsp、rtmp、hls等延遲大部分爲10秒左右,flv、mp4播放在3秒左右,可能與播放器或者其它配置有關係,暫未找到合適方案。

國標流媒體服務器其實就是負責將GB28181設備或者平臺推送的PS流轉成ES流,然後提供RTSP、RTMP、FLV、HLS等格式進⾏分發。也就是此篇文章的主線,基於akstream搭建國標流媒體服務。

篇幅原因更多內容可以參考https://mp.weixin.qq.com/s/gYS4W8HBsPYw2lQfEs7Y7Q

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