Qt/C++開發監控GB28181系統/協議解釋說明/SIP內容解釋/每一行數據什么含義

一、前言

搞gb28181開發,首要任務就是解析協議,按照gb28181的文檔來,還是非常詳細的,通過抓包工具可以查看到具體的收發數據,也可以打開網絡調試助手工具,監聽5060端口,看到上報的數據,都是一個通用規則的協議。

//設備端發送
REGISTER sip:34020000002000000001@3402000000 SIP/2.0
Via: SIP/2.0/UDP 192.168.0.64:5060;rport;branch=z9hG4bK1945388331
From: <sip:34020000001320000002@3402000000>;tag=33226951
To: <sip:34020000001320000002@3402000000>
Call-ID: 1455222403
CSeq: 1 REGISTER
Contact: <sip:34020000001320000002@192.168.0.64:5060>
Max-Forwards: 70
User-Agent: IP Camera
Expires: 3600
Content-Length: 0//服務端應答
SIP/2.0 200 OK
Via: SIP/2.0/UDP 192.168.0.64:5060;rport;branch=z9hG4bK1494593151
From: <sip:34020000001320000002@3402000000>;tag=33226951
To: <sip:34020000001320000002@3402000000>
Call-ID: 1455222403
CSeq: 2 REGISTER
User-Agent: wx_feiyangqingyun
Date: 2025-04-22T10:48:38.234
Content-Length: 0

消息頭

  • 第1行表明這條SIP消息的方法(Method)是REGISTER。
  • 34020000002000000001是SIP服務器的國標編碼。
  • 國標編碼指的是由中心編碼(8位) 、行業編碼(2位) 、類型編碼(3位)、序號(7位)四個碼段共20位十進制數字字符構成。
  • 具體國標編碼方法可以參考GB/T 28181—2016中的附錄D。
  • 3402000000指的是SIP服務器的域國標ID。
  • SIP/2.0指的是SIP協議版本。

Via頭

  • 第2行為Via頭,Via頭中包含了發送請求方的相關信息,后續需要使用這些信息進行回復。
  • SIP/2.0/UDP表示使用的是2.0版本的SIP協議,使用的傳輸協議是UDP,也可以使用TCP協議,大部分設備默認是UDP協議,GB2016以前只支持UDP協議。
  • 192.168.0.64:5060為請求發送方的IP地址和端口號。
  • Via頭中必須包含branch參數,具體值是一個在整個SIP通信過程中不重復的數值。
  • branch是一個事務ID(Transaction ID),用于區分同一個UA所發起的不同Transaction,它不會對未來的request或者是response造成影響,對于遵循IETF RFC3261規范的實現,
  • 這個branch參數的值必須用 z9hG4bK 字符串打頭
  • 其它部分是對To, From, Call-ID頭域和Request-URI按一定的算法加密后得到,也可以是隨機數或者UUID,目前沒發現有什么用途。
  • rport字段表示使用rport機制路由響應,即發送的響應時,按照rport中的端口發送SIP響應。
  • 也就是說IP和端口均完全遵照從哪里來的,發回哪里去的原則。
  • 如果沒有rport字段時,服務端的策略是IP使用UDP包中的地址,即從哪里來回哪里去,但是端口使用的是via中的端口,詳情見IETF RFC35818。

From頭

  • 第3行為From頭,From頭中包含了請求發送方的邏輯標識。
  • 在GB28181協議中是發送請求的設備國標ID和域國標ID信息。
  • tag參數是為了身份認證的,值為隨機數字字符。

To頭

  • 第4行為To頭,To頭在SIP協議中是為了標明請求接收方的邏輯標識的。
  • 在GB28181協議中填寫的是發送請求的設備國標ID和域國標ID信息。

Call-ID頭

  • 第5行為Call-ID頭,Call-ID頭是全局唯一的,在同一個session中保持一致,在不同session中不同。

CSeq頭

  • 第6行為CSeq頭,CSeq頭又叫Command Seqence(命令隊列),用于標識命令順序。
  • 值為序號+Method,序號部分為無符號整數,最大值為2^31。
  • 序號起始值是隨機的,后續在同一個session中依次遞增。
  • 比如發1 REGISTER沒返回—>再發2 REGISTER—>沒返回—>再發3 REGISTER—>這時返回了2 REGISTER就知道是第2個請求得到了響應。
  • 對于ACK和CANCLE中的CSeq與INVITE中的Cseq保持一致。

其他頭

  • 第7行為Contact頭,Contact頭包含源的URI信息,用來給響應消息直接和源建立連接用。在GB28181協議中為SIP設備編碼@源IP地址端口。
  • 第8行為Max-Forwards頭,Max-Forwards頭用于設置包最大中轉次數,默認是70。
  • 第9行為User-Agent頭,User-Agent頭用于設置關于UA的信息,用戶可以自定義。
  • 第10行為Expires頭,Expires頭表示超時時間。 值=0表示注銷。
  • 第11行為Content-Length頭,Content-Length頭表示消息體的長度,因為REGISTER消息不需要消息體,因此為0。如果攜帶了xml或者sdp等消息體,則>0。

二、效果圖

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

三、相關地址

  1. 國內站點:https://gitee.com/feiyangqingyun
  2. 國際站點:https://github.com/feiyangqingyun
  3. 個人作品:https://blog.csdn.net/feiyangqingyun/article/details/97565652
  4. 文件地址:https://pan.baidu.com/s/1d7TH_GEYl5nOecuNlWJJ7g 提取碼:01jf 文件名:bin_video_gb28181。

四、功能特點

  1. 支持設備注冊、注銷、心跳、校時、注冊認證、注銷認證等。
  2. 設備上線后可以手動獲取設備狀態、設備信息、配置信息、預置位信息等。
  3. 設備上線后自動獲取設備通道信息,包括中文通道名稱。識別到通道上線離線變化,會重新獲取該設備的所有通道信息。
  4. 支持視頻點播,可以分別點播主碼流和子碼流,內置rtp解包線程,解包后發給視頻播放組件解碼播放。
  5. 每個設備每個通道支持點播多個視頻,通過ssrc區分,支持共用端口和不同端口收流。
  6. 支持對某個設備下面所有通道、某個通道、某個通道對應的某個流分別關閉。
  7. 支持錄像文件查詢和回放,回放控制支持暫停播放、繼續播放、倍速播放、切換播放進度。
  8. 支持錄像文件下載,支持倍速比如8倍速下載,可同時多線程批量下載。
  9. 回放和下載同時支持IPC和NVR,比如攝像頭自帶的SD存儲卡錄像文件回放,NVR上的硬盤錄像文件回放。
  10. 支持云臺控制,向上、向下、向左、向右、左上、右上、左下、右下方位移動,鏡頭放大縮小,光圈放大縮小,鏡頭聚焦放焦。
  11. 支持預置位信息的查詢、調用、添加、修改、刪除等操作。
  12. 自動目錄訂閱功能,通道上線下線都有對應的信號通知。
  13. 內置定時讀取通道信息機制,以保證通道信息是最新的,比如有些NVR是不斷更新的通道信息。
  14. 支持警情訂閱,各種警情事件比如運動目標檢測報警、入侵檢測報警、徘徊檢測報警等自動上報。
  15. 國標服務同時支持udp和tcp方式,可選只監聽一種或者兩種都監聽,tcp方式自動處理粘包問題。
  16. 國標拉流同時支持udp、tcp被動、tcp主動三種方式,每個通道都可以自由選擇何種拉流方式。
  17. 內置拉流端口池,每次拉流從中取出一個,關閉流自動回收端口號,重復利用。
  18. 收流端口自動糾錯,自動跳過被占用的端口,不會出現端口占用導致收流失敗的情況。
  19. 視頻播放自適應硬解碼,極低資源占用,實時性極好,帶懸浮條顯示視頻流信息,可以直接在懸浮條單擊按鈕保存錄像文件到本地。
  20. 支持幾千路國標消息交互并發,實時視頻流支持64路同時顯示,可以拓展更多路數。
  21. 支持阿里云等云服務器,可以分別設置內網監聽地址和外網訪問地址,一般云服務器上是監聽地址用內網,對外訪問用外網地址。
  22. 支持視頻分發,也就是推流,視頻通道打開后可以自動推流到流媒體服務器,其他需要的地方拉流即可,支持rtsp、rtmp、hls、webrtc等方式拉流。
  23. SIP解析和交互采用純Qt底層代碼實現,udp/tcp通信交互,祖傳原創代碼解析,不依賴任何第三方。
  24. 代碼量少,gb28181交互部分共幾千行代碼,注釋詳細,接口友好,使用極其簡單,提供非常詳細的使用示例。
  25. 支持海康、大華、宇視、華為、天地偉業等所有國標設備。
  26. 支持所有Qt版本和編譯器以及操作系統,包括但不限于win、linux、mac、android、嵌入式linux、樹莓派香橙派、國產os等。

五、相關代碼


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/78500.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78500.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/78500.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++:string 1

練習題&#xff1a; 這個題的思路是從前往后&#xff0c;從后往前同時找&#xff0c;不是字母的話就繼續&#xff0c;是的話就交換。 代碼&#xff1a; #define _CRT_SECURE_NO_WARNINGS 1 #include <iostream> #include <string> using namespace std; //1、4個…

SMT貼片加工費控制與優化實踐指南

內容概要 SMT貼片加工費的控制與優化需建立在對成本結構的系統性認知基礎上。本節從物料采購、設備運行、工藝參數三大維度切入&#xff0c;結合BOM清單管理、鋼網使用規范等實操環節&#xff0c;構建覆蓋全流程的降本增效框架。以下表格列舉了SMT加工成本的典型構成要素及其占…

未來醫院已來:AI如何實現無死角安全監控

AI智慧醫院如何用算法守護安全與效率 ## 背景&#xff1a;醫療場景的智能化轉型需求 現代醫院作為人員密集、場景復雜的公共場所&#xff0c;面臨諸多管理痛點&#xff1a;患者跌倒可能延誤救治、醫鬧事件威脅安全、醫療垃圾處置不當引發感染風險、重點區域&#xff08;如藥…

Nuxt3中使用UnoCSS指南

Nuxt3中使用UnoCSS指南 UnoCSS是一個高度可定制的、原子化CSS引擎&#xff0c;可以輕松集成到Nuxt3項目中。下面介紹如何在Nuxt3中安裝和配置UnoCSS。 安裝步驟 安裝UnoCSS的Nuxt模塊&#xff1a; # 使用pnpm pnpm add -D unocss unocss/nuxt# 使用yarn yarn add -D unocss…

mmap詳解

mmap詳解 mmap基礎概念mmap內存映射原理mmap相關函數調用mmap的使用細節mmap和常規文件操作的區別 mmap基礎概念 mmap是一種內存映射文件的方法&#xff0c;即將一個文件或者其它對象映射到進程的地址空間&#xff0c;實現文件磁盤地址和進程虛擬地址空間中一段虛擬地址的一一…

Vue3的內置組件 -實現過渡動畫 TransitionGroup

Vue3的內置組件 -實現過渡動畫 TransitionGroup 是一個內置組件&#xff0c;用于對 v-for 列表中的元素或組件的插入、移除和順序改變添加動畫效果 支持和 基本相同的 props、CSS 過渡 class 和 JavaScript 鉤子監聽器&#xff0c;但有以下幾點區別&#xff1a; 默認情況下&…

【軟考-架構】14、軟件可靠性基礎

?資料&文章更新? GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目錄 軟件可靠性基本概念軟件可靠性建模軟件可靠性管理軟件可靠性設計N版本程序設計恢復塊設計&#xff08;動態冗余&#xff09;雙機容錯技術、集群技術負載均衡軟件可靠性測試…

使用Python+OpenCV對視頻抽幀保存為JPG圖像

使用PythonOpenCV對視頻抽幀保存為JPG圖像 import os import cv2 import time#視頻文件夾路徑&#xff0c;可修改 videoPath D:\\video\\ #保存的圖片文件夾路徑&#xff0c;可修改 savePath D:\\images\\ videolist os.listdir(videoPath) if not os.path.exists(savePath…

學習整理在centos7上安裝mysql8.0版本教程

學習整理在centos7上安裝mysql8.0版本教程 查看linux系統版本下載mysql數據庫安裝環境檢查解壓mysql安裝包創建MySQL需要的目錄及授權新增用戶組新增組用戶配置mysql環境變量編寫MySQL配置文件初始化數據庫初始化msyql服務啟動mysql修改初始化密碼配置Linux 系統服務工具,使My…

DeepSeek預訓練追求極致的訓練效率的做法

DeepSeek在預訓練階段通過多種技術手段實現了極致的訓練效率,其中包括采用FP8混合精度訓練框架以降低計算和內存需求 ,創新性地引入Multi-head Latent Attention(MLA)壓縮KV緩存以提升推理效率,以及基于Mixture-of-Experts(MoE)的稀疏計算架構以在保證性能的同時顯著降低…

【計算機視覺】CV項目實戰- 深度解析TorchVision_Maskrcnn:基于PyTorch的實例分割實戰指南

深度解析TorchVision_Maskrcnn&#xff1a;基于PyTorch的實例分割實戰指南 技術背景與核心原理Mask R-CNN架構解析項目特點 完整實戰流程環境準備硬件要求軟件依賴 數據準備與標注1. 圖像采集2. 數據標注3. 數據格式轉換 模型構建與訓練1. 模型初始化2. 數據加載器配置3. 訓練優…

x86系列CPU寄存器和匯編指令總結

文章目錄 概要一、寄存器1.1、8086寄存器1.2、通用寄存器1.3、擴展寄存器 二、指令集三、x86指令集常見指令使用說明四、匯編4.1、匯編語法4.2、nsam匯編 五、參考 概要 在對學習Go的過程中&#xff0c;涉及到了匯編&#xff0c;因此對X86系列CPU的背景、寄存器、匯編指令做了一…

戴維斯雙擊選股公式如何編寫?

戴維斯雙擊&#xff0c;指的是營收增長和凈利潤增長同步&#xff0c;并有超預期的財務狀況。 戴維斯雙擊是指在低市盈率&#xff08;P/E&#xff09;時買入股票&#xff0c;待公司盈利增長和市盈率提升后賣出&#xff0c;以獲取雙重收益。以下是一個簡單的通達信選股模型示例&…

前端面試寶典---vue原理

vue的Observer簡化版 class Observer {constructor(value) {if (!value || typeof value ! object) returnthis.walk(value) // 對對象的所有屬性進行遍歷并定義響應式}walk (obj) {Object.keys(obj).forEach(key > defineReactive(obj, key, obj[key]))} } // 定義核心方法…

從“聾啞設備“到超級工廠:EtherCAT轉Modbus協議網關正在重構工業未來

當全球工廠加速邁向工業4.0&#xff0c;您的生產線是否因Modbus設備“拖后腿”而被迫降速&#xff1f;無需百萬改造&#xff01;無需淘汰設備&#xff01;一套EtherCAT從站轉Modbus協議網關&#xff0c;讓30年老機床與智能工廠實時對話&#xff0c;效率飆升300%&#xff01; 一…

Tauri文件系統操作:桌面應用的核心能力(入門系列四)

今天我們來聊聊Tauri中一個超級重要的功能 - 文件系統操作。這可是Web應用和桌面應用最大的區別之一。在瀏覽器里&#xff0c;出于安全考慮&#xff0c;我們對文件系統的訪問被限制得死死的。但在Tauri桌面應用中&#xff0c;我們可以安全地訪問用戶的文件系統&#xff0c;這簡…

Python解析地址中省市區街道

Python解析地址中省市區街道 1、效果 輸入&#xff1a;海珠區沙園街道西基村 輸出&#xff1a; 2、導入庫 pip install jionlp3、示例代碼 import jionlp as jiotext 海珠區沙園街道西基村 res jio.parse_location(text, town_villageTrue) print(res)

基于Node+HeadlessBrowser的瀏覽器自動化方案

基于NodeHeadlessBrowser的瀏覽器自動化方案 什么是無頭瀏覽器(Headless Browser)&#xff1f; 無頭瀏覽器&#xff0c;就像是一個沒有用戶界面的瀏覽器程序。你可以想象它就是一個“隱形”的瀏覽器&#xff0c;只不過它沒有圖形界面&#xff0c;但能做我們用普通瀏覽器所能做…

AEB法規升級后的市場預測與分析:技術迭代、政策驅動與產業變革

文章目錄 一、政策驅動&#xff1a;全球法規升級倒逼市場擴容二、技術迭代&#xff1a;從“基礎防護”到“場景全覆蓋”三、市場格局&#xff1a;競爭加劇與生態重構四、挑戰與未來展望五、投資建議結語 近年來&#xff0c;全球汽車安全法規的加速升級正深刻重塑AEB&#xff08…

【Docker項目實戰】使用Docker部署Caddy+vaultwarden密碼管理工具(詳細教程)

【Docker項目實戰】使用Docker部署vaultwarden密碼管理工具 前言一、vaultwarden介紹1.1 vaultwarden簡介1.2 主要特點二、本次實踐規劃2.1 本地環境規劃2.2 本次實踐介紹三、本地環境檢查3.1 檢查Docker服務狀態3.2 檢查Docker版本3.3 檢查docker compose 版本四、拉取鏡像五、…