使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

时间:2024-04-04 17:47:21

     目前使用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系统作为流媒体测试机,低配置2核2M的,1200多一年,按月的话差不多300一个月

2、购设备:需要看清楚支持gb28181的,一个海康云台摄像机700多块

3、调试其间在本机windows调试,以后可以部署到linux,下载目前我参与的c#开源项目

https://github.com/GB28181/GB28181.Solution

用于作为sip server服务,可以进行对摄像机进行通过信令进行相关操作 ,编译环境vs2019(开源项目里,文档中的微信,可以进入该项目开源群,一起为这个项目做贡献,建议加入)

4、在centos服务器下载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 主要配置好以下几个

SIP服务器ID 34020000002000000001

本机IP 127.0.0.1 (或我本机IP192.168.197.108)

本机服务端口 5061

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

2、对应在摄像机的配置如下:

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

 

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 

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

 

 

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

5、到这一步,推流成功了,我们打开srs的测试http://ossrs.net/players/srs_gb28181.html 接口界面 ,可以实现rmtp、webrtc(低延时实测1秒内)、flv、hls(m3u8)输出,输入srs服务器IP进行播放

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

6、非常罕有的能做到毫秒级延迟国标gb28181公网视频传送案例

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

上面有相关操作步骤,肚饿了,本文章在后续我还有很多内容需要再补充和细化更新的,更多了解可以通过https://github.com/GB28181/GB28181.Solution项目,介绍内容中的“微信”加入开源群

微信扫描二维码,添加好友,进入微信讨论群(注明:GB28181+公司+姓名):

使用c# .net core开发国标gb28181 sip +流媒体服务完成视频监控实例教程 亲身完美体验过程...

觉得好的同学,记得点个赞!