基于GB28181搭建流媒体服务器--1.概念解析

GB28181是中国的公共安全视频监控联网系统技术标准,介绍了其在设备接入、管理、视频传输和事件告警等方面的要求。对比了RTSP和RTMP,强调了GB28181在视频监控系统中的应用和特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是GB28181

GB28181(国标28181),全称为《中华人民共和国公共安全视频监控联网系统技术要求》,是中国国家标准委员会发布的一个针对公共安全视频监控领域的标准框架。该标准指导了视频监控设备之间的联网互通,统一管理和控制,并提供了一套包括设备接入、设备管理、视频传输、事件告警等功能要求。

GB28181标准采用了基于IP网络的架构,通过使用 SIP(Session Initiation Protocol,会话初始协议) 实现设备的接入通信和管理,通过使用RTSP(Real-Time Streaming Protocol 实时流传输协议) 标准协议实现设备之间的视频流传输,包括实时预览、录像回放等操作。

总体而言,GB28181 标准的出台旨在提高公共安全视频监控系统的互联互通能力,促进不同厂家设备的兼容性和互操作性,确保系统的可靠性、稳定性和安全性。它对于中国的公共安全行业具有重要意义,并在国内得到广泛的推广和应用。

GB28181与RTSP、RTMP的区别

RTSP(Real-Time Streaming Protocol)、RTMP(Real-Time Messaging Protocol)和GB28181都是用于实时流媒体传输,大概区别如下:

1. RTSP:

   - RTSP是一种应用层协议,用于控制和传输实时流媒体数据。

   - RTSP主要用于控制流媒体服务器和客户端之间的数据传输,可以控制播放、暂停、停止等操作。

   - RTSP本身不传输音视频数据,而是使用RTP(Real-Time Transport Protocol)来传输音视频数据。

   - RTSP通常使用TCP或UDP作为传输协议。

2. RTMP:

   - RTMP是一种用于实时流媒体传输的协议,通常用于音视频直播。

   - RTMP是一种应用层协议,用于控制和传输实时音视频数据。

   - RTMP可以传输音视频数据和控制信息,支持实时播放、直播推流、推拉流等功能。

   - RTMP通常使用TCP作为传输协议,在传输时会对数据进行压缩和封装。

3. GB28181:

   - GB28181是中国国家标准,用于视频监控系统的监控设备间通信。

   - GB28181采用SIP(Session Initiation Protocol)作为信令协议,使用RTP/RTCP来传输实时音视频数据。

   - GB28181支持视频流、音频流和数据流的传输和控制,可以实现视频监控、语音对讲、设备控制等功能。

   - GB28181规定了设备之间的通信方式和协议,以及设备的注册、预览、录像等操作。

总体来说,RTSP用于控制和传输实时流媒体数据,RTMP用于音视频直播,GB28181用于视频监控系统中设备间的通信。它们在使用方式、功能和传输协议等方面有所区别,适用于不同的应用场景。

基于GB28181实现流媒体服务器

一、技术解码 | GB28181/SIP/SDP 协议

技术解码 | GB28181/SIP/SDP 协议--EasyGBS国标GB28181平台国标视频技术GB28181解析 - 知乎

二、 Linux平台下搭建GB28181服务器(WVP+ZLMediakit)

Linux平台下搭建GB28181服务器(WVP+ZLMediakit)_gb28181服务器搭建_码农飞飞的博客-CSDN博客

三、从零开发一个国标GB28181流媒体服务器

《国标GB28181系列》从零开发一个国标GB28181流媒体服务器,并实现大华摄像头国标协议推流_哔哩哔哩_bilibili

国标GB28181流媒体服务器介绍

  1. 一个基于C++开发的国标GB28181流媒体信令服务器。

  2. 采用BXC_SipServer+ZLMediaKit。可以搭建一个接收摄像头国标协议推流的国标流媒体服务,然后实现RTSP/RTMP/HTTP-FVL/HLS/WS/SRT等协议分发视频流。

  3. BXC_SipServer负责信令模块,ZLMediaKit负责流媒体模块。

  4. BXC_SipServer作为国标流媒体服务器的信令模块。用于接收摄像头的信令注册,注册完成后, 主动向摄像头发送Invite请求,摄像头收到Invite请求后, 返回Invite的确认。 服务端收到确认后,发送ACK请求, 摄像头收到ACK请求后,开始通过RTP传输ps流推流至ZLMediaKit的国标RTP Server。 ZLMediaKit作为国标流媒体服务器的流媒体模块,主要用于接收摄像头国标推流和其他协议的分发。

  5. 补充说明一下,这只是我为了讲课而开发的demo级的信令服务器,部分信令功能并没有实现。但是基本功能是没问题了,对接摄像头是完全没问题的, 对于学习国标流媒体信令服务器的新手,完全够用了,可以快速体验国标协议,通过wireshark抓包快速感受国标对接的流程。

 

WVP与ZLmediakit

WVP(Web Video Platform)是一种基于Web的视频平台,提供视频监控、视频存储、视频回放等功能。在GB28181中,WVP通常用于指代视频监控平台,用于管理和展示GB28181标准下的视频设备。

https://github.com/648540858/wvp-GB28181-proicon-default.png?t=N7T8https://github.com/648540858/wvp-GB28181-pro

ZLMediakit是一个开源的流媒体服务器软件框架,它提供了丰富的音视频处理和流媒体传输功能。ZLMediakit可以用于构建流媒体服务器,支持不同的流媒体协议,如RTSP、RTMP等。它可以与GB28181协议结合使用,实现视频设备之间的互联和流媒体数据的传输。
https://github.com/648540858/wvp-GB28181-pro
https://github.com/ZLMediaKit/ZLMediaKiticon-default.png?t=N7T8https://github.com/ZLMediaKit/ZLMediaKit

### 如何使用Java搭建GB28181协议服务器 #### 了解GB28181标准 GB28181是中国国家标准,用于视频监控系统的联网接口。该标准定义了设备接入、注册注销、媒体传输等功能。 为了实现基于此标准的服务端应用,在Java环境中开发时需考虑几个方面: - **依赖库的选择**:选择合适的第三方库来处理SIP信令以及RTP流媒体数据是非常重要的。JAIN SIP API可以用来构建SIP客户端和服务端应用程序[^4]。 - **配置环境**:确保安装了必要的工具链如Maven或Gradle来进行项目管理和编译工作;同时还需要设置好网络参数以便测试服务的功能性。 ```xml <!-- Maven pom.xml --> <dependencies> <!-- JAIN SIP dependency --> <dependency> <groupId>javax.sip</groupId> <artifactId>jain-sip-api</artifactId> <version>1.2.0</version> </dependency> <!-- Add other dependencies here... --> </dependencies> ``` #### 实现基本功能模块 ##### 创建SIP监听器类 通过继承`SipListener`接口并重写相应方法以响应来自前端设备的消息请求。 ```java public class Gb28181Server implements SipListener { private final ServerTransaction transaction; @Override public void processRequest(RequestEvent requestEvent) { Request request = requestEvent.getRequest(); if ("REGISTER".equals(request.getMethod())) { handleRegister(request); } else if ("INVITE".equals(request.getMethod())) { handleInvite(request); } // Handle more methods... } private void handleRegister(Request register){ // Implementation for handling REGISTER requests. } private void handleInvite(Request invite){ // Implementation for handling INVITE requests which usually contain media session information. } } ``` ##### 初始化SIP栈并与之交互 编写启动程序初始化SIP堆栈并将自定义的监听器实例绑定到它上面等待事件触发。 ```java import javax.sip.SipFactory; // ... public static void main(String[] args)throws Exception{ Properties properties = new Properties(); properties.setProperty("javax.sip.STACK_NAME", "gb28181Stack"); properties.setProperty("gov.nist.javax.sip.THREAD_POOL_SIZE","5"); SipFactory sipFactory = SipFactory.getInstance(); sipFactory.setPathName("gov.nist"); SipStack sipStack = sipFactory.createSipStack(properties); ListeningPoint listeningPointUDP = sipStack.createListeningPoint("localhost", 5060, "udp"); SipProvider sipProvider = sipStack.createSipProvider(listeningPointUDP); sipProvider.addSipListener(new Gb28181Server()); System.out.println("Gb28181 server started."); } ``` 以上代码片段展示了如何创建一个简单的GB28181兼容的服务端框架。实际部署过程中可能还需进一步完善错误处理机制、安全性措施等方面的工作,并根据具体需求调整业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值