用c# .net core開發gb28181 sip+流媒體服務完成視頻監控實例教程 親身完美體驗過程

       目前使用C# .net core 來實現國標gb28181標準的攝像頭播放、ptz雲臺控制、視頻回放等視頻監控功能,項目可運行於linux/docker/.net core環境,也是當前非常罕有的能做到毫秒級國標gb28181公網視頻傳送案例,也是少有的能同時具有播放、ptz雲臺控制、視頻回放功能的完整開源sip的項目。

使用方案:sip(GB28181.Solution c# .net core) +  流媒體服務器(srs/ZLMediaKit)

使用場景:直播、社區視頻監控、視頻AI分析、等需要用到把攝像頭從內外轉到外網訪問使用的場景

     全網也很難找得到完整教程,我2017年就開始買攝像頭回來研究過一段時間,後來無果,最近因公司需要使用,再經過半年多的資料收集和不斷的學習試錯,找到正確的道路,免得大家走彎路。爲大家分享,然後對c#的開發者帶來驚喜,也共同爲c#的發展作出貢獻!

一、我的實現準備:

1、在淘寶購買一個ces服務器 centos 7系統作爲流媒體測試機,低配置2核2M的,1200多一年,按月的話差不多300一個月

2、購設備:需要看清楚支持gb28181的,一個海康雲臺攝像機700多塊

3、調試其間在本機windows調試,以後可以部署到linux,下載目前我參與的c#開源項目

https://gitee.com/GB28181/GB28181.Solution

用於作爲sip server服務,可以進行對攝像機進行通過信令進行相關操作 ,編譯環境vs2019(開源項目裏,文檔中的微信,可以進入該項目開源羣,一起爲這個項目做貢獻,建議加入)

4、在centos 7服務器下載srs4.0,github地址: 

https://github.com/winlinvip/srs  (develop分支)

5、下載sip抓包工具 wireshark  

下載地址:https://www.wireshark.org/#download

附帶wireshark使用過程中可能會發生的內存佔用大,卡機的解決辦法

https://blog.csdn.net/qq_16005627/article/details/105603395

 

二、實現步驟

通過GB28181.Solution配置好srs的服務器地址和端口,項目的wintool運行起來,點直播放視頻,在srs服務器上可以看到rtp流已經推上來,可以實現rmtp、webrtc(低延時實測2秒內)、flv、hls(m3u8)輸出

然後通過vlc進行播放

1、打開GB28181.WinTool項目,配置 Config/gb28181.xml 主要配置好以下幾個

<LocalID>34020000002000000001</LoclID>SIP服務器ID 34020000002000000001

<LocalIP>127.0.0.1</LocalIP>本機IP 127.0.0.1 (或我本機IP192.168.197.108)

<LocalPort>5061</LocalPort>本機服務端口 5061

 <RemotePort>5060</RemotePort>設備端口

<MediaIP>47.115.1.118</MediaIP>流媒體服務器地址(srs)

<MediaPort>9000</MediaPort>流媒體服務器端口(srs)

 

 

2、對應在攝像機的配置如下:

è¾å¥å¾ç说æ

 

3、在srs的github中查看srs的運行辦法,運行srs,以下爲我整理的簡單易懂的指令

------------------------------------------

Step1:拉git代碼,切換到開發分支

git clone https://gitee.com/winlinvip/srs.oschina.git srs &&

cd srs/trunk &&

git remote set-url origin https://github.com/ossrs/srs.git &&

git pull

Step2:切換到開發分支

git checkout develop &&

./configure --with-gb28181 &&

make clean && make

------------------------------------------------

以上srs安裝完畢,修改兩個配置

打開trunk/conf/push.gb28181.conf

auto_create_channel   on;//原來off改爲on

 host       47.XX.XXX.118;//原來$CANDIDATE改爲你的服務器ip

----------------------------------------------

運行

./objs/srs -c conf/push.gb28181.conf

4、然後啓動項目GB28181.WinTool 

è¾å¥å¾ç说æ

è¾å¥å¾ç说æ

 

 

5、到這一步,推流成功了

我們打開srs的測試http://ossrs.net/players/srs_gb28181.html 接口界面 ,可以實現rmtp、webrtc(低延時實測1秒內)、flv、hls(m3u8)輸出,輸入srs服務器IP進行播放

 

 

大家注意:播放地址最後一段childxxxx(ssrc)這個是每個通道顯示不一樣的,那麼怎麼把播放地址與設備關聯,以便把播放地址保存到數據庫,解決方法如下,自定義rtp的ssrc值,那麼播放地址也會跟隨之改變,如果要對接其它流媒體平臺也都是用這個ssrc值作爲放播放地址的:

6、播放

播放步驟

非常罕有的能做到毫秒級延遲國標gb28181公網視頻傳送案例

è¾å¥å¾ç说æ

 

三、使用gb28181.server服務端+ api方式來進行部署

以上是使用wintool工具進行測試推流方法,如果是使用到開發或者生產環境中,需要使用服務端+grpc to api來進行

運行gb28181.Server

看到有設備註冊上來

調用接api

查看srs看到有rtp推流上來,即可進行播放,播放流程與上面第5點相同

-----------------------------------------------------------------------結束-------------------------------------------------------------------

上面有相關操作步驟,肚餓了,本文章在後續我還\很多內容需要再補充和細化更新的,更多瞭解可以通過https://gitee.com/GB28181/GB28181.Solution項目,介紹內容中的“微信”加入開源羣,羣主微信

覺得好的同學,記得點個贊!

 

 

 

 

 

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