【學習筆記】RTSP-Ovnif-GB28181
一、RTSP_RTP_RTCP
RTSP(Real Time Streaming Protocol),RFC2326,實時流傳輸協議,是TCP/IP協議體系中的一個應用層協議。
RTP協議詳細說明了在互聯網上傳遞音頻和視頻的標準數據包格式。它是創建在UDP協議上的。
RTCP是實時傳輸協議(RTP)的一個姐妹協議。RTP 使用一個 偶數 UDP port ;而RTCP 則使用 RTP 的下一個 port,也就是一個奇數 port。(RTCP 中的 SR (Sender Report發送端報告)控制分組包含NTP(網絡時間)時間戳和RTP時間戳可用于同步音視頻媒體流。)
簡單理解:
RTP:視頻數據傳輸
RTCP:視頻質量控制
RTSP:視頻控制(開始、暫停、快進等)
一次基本的RTSP交互過程如下,C表示客戶端,S表示服務端。
? 1、 首先客戶端連接到流媒體服務器并發送一個RTSP描述請求(DESCRIBE request)
? 2、 服務器通過一個SDP(Session DescriptionProtocol)描述來進行反饋(DESCRIBEresponse),反饋信息包括流數量、媒體類型等信息。
? 3、 客戶端分析該SDP描述,并為會話中的每一個流發送一個RTSP連接建立請求
(SETUPrequest),該命令會告訴服務器用于接收媒體數據的端口
? 4、 服務器響應該請求(SETUP response)并建立連接之后,就開始傳送媒體流(RTP包)到客戶端。
? 5、 在播放過程中客戶端還可以向服務器發送請求來控制快進、快退和暫停等。最后,客戶端可發送一個終止請求(TEARDOWN request)來結束流媒體會話
拓展:編碼、封裝
編碼格式:支持H.265、H.264、MPEG4、MJPEG等多種編碼格式;
封裝格式:支持HLS(直播)、RTP、TS(廣播電視)、FLV(監控系統)等主流的封裝格式;
一個常見的視頻流程如下:
攝像機——>網絡——>計算機(顯示器)
?
從功能上來講,是下面的流程(為了更直觀加了封裝流程):
采集——>編碼——>封裝——>傳輸——>解封——>解碼——>顯示
YUV->H.264->RTP->UDP->RTP->H.264->YUV
二、Ovnif
ONVIF(Open Network Video Interface Forum)是一個全球性的開放性標準,旨在促進網絡視頻設備之間的互操作性。
視頻監控中:IPC攝像頭就是一個服務端,它對外提供接口服務(Web Services),并使用RTSP協議傳輸流媒體;客戶端通過ONVIF協議規定的Web Services接口可以獲取攝像頭的RTSP地址,并通過RTSP地址拉取視頻流觀看視頻監控、還可以根據ONVIF協議規范的Web Services接口管理攝像頭。
Web Services就是對外提供接口的一個http服務,客戶端通過調用Web Services提供的接口滿足自己的需求,使用的協議都是基于http的。
ONVIF就是把各個功能定義出來,并且把功能對應的Web Services接口固定下來,包括數據格式,參數等,這樣就形成了一套規范,各個廠商都遵循這套規范就可以互通了。
舉例:海康威視攝像頭與大華 NVR 通過 ONVIF 對接時,無需關注底層協議差異,直接按標準接口交互,而純 RTSP 對接可能因 SDP(SDP 本質上是一種文本格式的元數據描述,用于告知接收端 “流的類型、編碼方式、傳輸參數” 等信息,類似 “流的身份證”) 描述格式不同導致媒體協商失敗。
三、GB28181
參考文獻:史上最全的GB/T 28181介紹(國標28181資料大全) - 知乎
國家標準。采用了基于SIP(Session Initiation Protocol)的網絡視頻傳輸協議,規范了視頻監控設備之間的通信方式。這使得來自不同廠商的設備可以實現統一的通信協議,并在同一平臺上實現集成和管理。
GB28181協議會話通道實際上使用的是SIP協議,并且在SIP協議的基礎之上做了些私有化處理。
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傳輸。GB28181協議中具體通信協議結構圖如下圖1所示:
會話通道中,注冊、實時視音頻點播、歷史視音頻的回放等應用的會話控制采用SIP協議IETF RFC3261中規定的REGISTER、INVITE等請求和響應方法實現, 歷史視音頻回放控制采用SIP擴展協議IETF RFC29765規定的INFO方法實現,前端設備控制、信息查詢、報警事件通知和分發等應用的會話控制采用SIP擴展協議IETF RFC34287規定的MESSAGE方法實現。
四、備注
GB28181:雖然 GB28181 標準本身定義了一套基于 SIP 的信令交互和媒體傳輸機制,用于實現設備之間的互聯互通,但在實際應用中,一些 GB28181 平臺或設備可能會借助 RTSP 來拉取視頻流。比如,當 GB28181 平臺需要與只支持 RTSP 輸出的設備進行對接時,就需要通過 RTSP 協議從這些設備拉取視頻流,然后再將其轉換為符合 GB28181 標準的格式進行處理和分發。
ONVIF:ONVIF 協議在設備發現、能力查詢等過程中,會獲取設備的相關信息,其中就包括設備支持的視頻流地址,而這個地址很多時候就是 RTSP 地址。通過獲取到的 RTSP 地址,ONVIF 客戶端可以使用 RTSP 協議來拉取設備的視頻流,以實現視頻監控、錄像回放等功能。例如,ONVIF 設備(如攝像機)會暴露一個 RTSP 端點(URL),客戶端通過 ONVIF 信令獲取該端點后,再使用 RTSP 協議(如發送SETUP、PLAY、TEARDOWN等請求)控制媒體流的傳輸。可以理解為Ovnif就是RTSP的一層高級封裝吧。
五、總結
維度 | RTSP | GB28181 | ONVIF |
---|---|---|---|
協議性質 | 流媒體傳輸協議(IETF 國際標準) | 中國安防行業應用層標準(國家標準) | 國際設備互操作應用層標準(開放性行業標準協議) |
層級 | 應用層(RFC 2326) | 應用層(基于SIP網絡視頻傳輸協議擴展) | 應用層(基于 Web Services) |
信令機制信令層(Signaling Layer)負責建立、控制和釋放媒體會話(如會話初始化、參數協商) | 文本格式命令信令命令:PLAY(開始播放)、PAUSE(暫停)、TEARDOWN(斷開連接) 舉例:獲取媒體描述(DESCRIBE);返回關鍵字段:m=video(媒體類型)、a=rtpmap(編碼格式 H.264)、a=control(流控制標識) 典型流程:OPTIONS查詢能力 → DESCRIBE獲取 SDP → SETUP建立傳輸通道 → PLAY啟動流 → TEARDOWN斷開連接。 | SIP+XML(兼容 SIP 協議框架) 舉例:平臺向設備請求(INVITE)實時流,設備返回 200 OK,并在 SDP 中告知媒體端口(如 RTP 端口 5004),平臺通過 RTP 接收流。 | SOAP/XML(Web 服務接口) 信令通過 SOAP 協議封裝為 XML 格式,用于設備發現、能力查詢、流控制等。 舉例:獲取媒體流地址(GetStreamUri)客戶端向設備服務接口發送 SOAP 請求;服務器響應(包含 RTSP URL) |
媒體傳輸媒體層則在會話建立后實際傳輸和處理媒體數據。 | 支持 RTP/UDP 或 RTCP(需配合使用) | RTP/RTCP(PS 封裝或裸流) | RTSP/RTCP(可調用 RTSP 接口拉流) |
應用場景 | 通用流媒體(如視頻會議、直播) | 國內安防監控系統互聯 | 跨廠商安防設備互操作 |