使用GB28181從海康NVR設備上獲取實時視頻

本人現在已經不做音視頻方向了,所以大家的一些疑問可能無法解答,相關資料基本都在下載鏈接中,希望可以幫助到大家。


正文:

最近在調研使用GB28181協議獲取海康NVR設備上的實時視音頻數據,真的是搞了好久才弄好。

這在裏記錄一下調研過程中遇到的問題。要想獲取海康NVR上綁定攝像頭的實時音視頻流,需要將海康NVR開啓接入服務,SIP服務器的地址填寫我們程序的地址信息,ID號隨便搞一個,啓用這個服務之後,NVR會不斷的向填寫的地址發送 Register消息,我們的程序接收註冊消息即可,直接回復200OK也可以。



然後NVR註冊成功之後。我們就可以給NVR發送查詢或者獲取實時視音頻/錄像文件的請求了。這些在GB28181標準文檔裏面都有。查詢NVR上綁定了那些攝像頭使用的是Message消息,獲取音視頻數據使用的是 Invite命令。和NVR之間傳輸音視頻數據使用的是rtp協議。

下面說一下和NVR交互過程中需要注意的地方:

1.發送消息的時候要注意 頭部的 from/to字段中的數據
2.想要NVR服務器返回消息的話,需要讓NVR作爲客戶端,開啓NVR的 GB28181平臺接入功能,然後服務器填寫自己本機的IP地址,然後NVR會自動發送註冊信息給你,註冊成功之後,就可以正常的查詢NVR的設備目錄等一系列信息了
3.當需要查詢錄像文件信息的時候,需要使用要查詢的攝像頭的ID號來查詢,不能使用 NVR的ID號來查詢,否則 NVR會一直迴應 400錯誤的請求
4.發送給 NVR的獲取錄像文件的 invite邀請,invite中的 SDP信息中必須含有 u字段,u字段說明要獲取的是哪個攝像頭的錄像文件
5.發送Bye消息給 NVR或者攝像機都回復我 481 Call Leg/Transaction Does Not Exist,一直以爲發送的 DeviceID不對,各種查找原因,最後仔細看了一下,發現應該是說 Transaction這個事物不存在導致的,而一個事物的標記是由 Call-id、local tag、remote tag三者值相同代表一個 dialog,
所以發送 Bye消息的時候,這三個值一定要和發送 Invite消息的時候一致,否則 NVR或者IPC就會返回 481告知沒有這個對話或者事物
6.NVR發送的 Keepalive狀態信息報送消息,回覆200ok即可
7.當客戶端第一次接入時,客戶端將持續向Server端發送REGISTER消息,直到Server端回覆"200 OK"後結束
8.查詢NVR上的攝像頭信息 要填寫NVR ID,要獲取某個攝像頭上的錄像信息的時候,需要填寫攝像頭所在通道號的ID。


最後是遇到問題可以多看一下GB28181的標準文檔,那些字段填寫什麼裏面基本都有說明。

GB28181標準文檔下載地址:http://download.csdn.net/detail/lt_lover/9742585
GB28181我調研ppt下載地址:http://download.csdn.net/detail/lt_lover/9742586

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