GB28181
GB28181 即 GB/T28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》。它是公安部提出的公共安全行业标准,在视频监控领域具有重要地位。
- 主要目的和应用场景:
- 目的:解决不同厂家的视频监控设备执行各自标准,导致无法互通、无法统一管理的问题,实现视频监控系统的互联互通和统一管理。
- 应用场景:广泛应用于城市安防监控网络建设、跨区域的大规模视频监控系统整合等,尤其在公安、交通等行业的视频监控平台建设中发挥着关键作用。例如,一个城市的公安监控系统可以通过 GB28181 标准将不同区域、不同厂家的监控设备连接起来,实现统一的监控和管理。
- 技术架构和通信方式:
- 技术架构:联网系统在进行视音频传输及控制时应建立两个传输通道,即会话通道和媒体流通道。
- 会话通道:用于在设备之间建立会话并传输系统控制命令,如设备注册、心跳保活、信息查询、报警事件通知等。
- 媒体流通道:用于传输视音频数据,经过压缩编码的视音频流采用流媒体协议 RTP/RTCP 传输。
- 通信方式:信令层面使用的是 SIP(会话初始协议),在 SIP 协议的基础之上做了些私有化处理。SIP 是一个用于创建、修改和终止多媒体会话的协议,它可以实现设备的注册、呼叫建立、会话管理等功能。
- 技术架构:联网系统在进行视音频传输及控制时应建立两个传输通道,即会话通道和媒体流通道。
- 功能特点:
- 设备注册:设备进入联网系统时需向 SIP 服务器进行注册登记,注册信息包括设备的国标 ID、域国标 ID、IP 地址、端口号等,以便系统对设备进行识别和管理。
- 设备信息获取:可以获取设备的相关信息,如设备类型、设备型号、设备状态等,还能够拉取与设备关联的摄像头信息,对于像 NVR 设备这种可能连接多个摄像头的情况,可方便地获取其下属摄像头的信息。
- 实时视音频传输:支持实时拉取设备当前的视频数据,以便用户实时查看监控画面。
- 设备控制:可向设备发送控制信息,例如对球机进行云台控制,实现摄像头的转动、变焦等操作。
- 历史视音频查询与回放:能够查询设备的历史视频记录,包括查看哪些时间段有视频、文件大小等信息,并可以拉取指定时间段的视频进行回放和下载。
- 优势和不足:
- 优势:
- 协议统一:为视频监控系统的互联提供了统一的标准和规范,方便不同平台、不同厂家的设备之间进行通信和数据交换。
- 可扩展性强:支持多级平台的级联,可以构建复杂的视频监控网络架构,满足大规模监控系统的需求。
- 支持外网访问:在一定程度上可以实现视频流出外网,方便用户远程访问和查看监控视频。
- 不足:
- 标准不够完善:国标相对简陋,只定义了一些基本的通信字段,对于很多异常通信情况没有进行详细的处理规定,导致在平台对接过程中可能会出现一些问题。
- 消息推送较慢:在一些情况下,消息的推送和响应速度可能较慢,影响用户的使用体验。
- 优势:
- 开发模块
大牛直播SDK推出的Android平台GB28181接入SDK(SmartGBD),可实现不具备国标音视频能力的 Android终端,通过平台注册接入到现有的GB/T28181—2016服务,可用于如执法记录仪、智能安全帽、智能监控、智慧零售、智慧教育、远程办公、明厨亮灶、智慧交通、智慧工地、雪亮工程、平安乡村、生产运输、车载终端等场景,可能是业内为数不多功能齐全性能优异的商业级水准GB28181接入SDK。
Android终端除支持常规的音视频数据接入外,还可以支持移动设备位置(MobilePosition)订阅和通知、图像抓拍、语音广播和语音对讲、历史视音频下载和回放,支持对接数据类型如下:
- 编码前数据(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型),其中,Android平台前后摄像头数据,或者屏幕数据,或者Unity拿到的数据,均属编码前数据;
- 编码后数据(如无人机等264/HEVC数据,或者本地解析的MP4音视频数据);
- 拉取RTSP或RTMP流并接入至GB28181平台(比如其他IPC的RTSP流,可通过Android平台GB28181接入到国标平台)。
功能支持:
- [视频格式]H.264/H.265(Android H.265硬编码);
- [音频格式]G.711 A律、AAC;
- [音量调节]Android平台采集端支持实时音量调节;
- [H.264硬编码]支持H.264特定机型硬编码;
- [H.265硬编码]支持H.265特定机型硬编码;
- [软硬编码参数配置]支持gop间隔、帧率、bit-rate设置;
- [软编码参数配置]支持软编码profile、软编码速度、可变码率设置;
- 支持横屏、竖屏推流;
- Android平台支持后台service推送屏幕(推送屏幕需要5.0+版本);
- 支持纯视频、音视频PS打包传输;
- 支持RTP OVER UDP和RTP OVER TCP被动模式(TCP媒体流传输客户端);
- 支持信令通道网络传输协议TCP/UDP设置;
- 支持注册、注销,支持注册刷新及注册有效期设置;
- 支持设备目录查询应答;
- 支持心跳机制,支持心跳间隔、心跳检测次数设置;
- 支持移动设备位置(MobilePosition)订阅和通知;
- 适用国家标准:GB/T 28181—2016;
- 支持语音广播;
- 支持语音对讲;
- 支持图像抓拍;
- 支持历史视音频文件检索;
- 支持历史视音频文件下载;
- 支持历史视音频文件回放;
- 支持云台控制和预置位查询;
- [实时水印]支持动态文字水印、png水印;
- [镜像]Android平台支持前置摄像头实时镜像功能;
- [实时静音]支持实时静音/取消静音;
- [实时快照]支持实时快照;
- [降噪]支持环境音、手机干扰等引起的噪音降噪处理、自动增益、VAD检测;
- [外部编码前视频数据对接]支持YUV数据对接;
- [外部编码前音频数据对接]支持PCM对接;
- [外部编码后视频数据对接]支持外部H.264数据对接;
- [外部编码后音频数据对接]外部AAC数据对接;
- [扩展录像功能]支持和录像SDK组合使用,录像相关功能。
RTSP
RTSP(Real Time Streaming Protocol),即实时流传输协议,是一种用于控制流媒体服务器和客户端之间的流媒体传输的应用层协议。
- 协议概述:
- 定义:RTSP(Real Time Streaming Protocol)即实时流传输协议,是 TCP/IP 协议体系中的一个应用层协议,用于控制具有实时性的多媒体数据(如音频、视频等)的传送。
- 作用:该协议提供了一个可扩展的框架,以控制、按需传送实时数据。它建立并控制一个或多个音频和视频连续媒体的时间同步流,实现客户端与服务器之间的媒体流传输的交互控制,但本身并不发送连续媒体流,而是与其他传输协议(如 RTP、RTCP)配合使用。
- 协议特点:
- 可扩展性:新方法和参数很容易加入 RTSP,方便根据不同的需求进行功能扩展。
- 易解析性:RTSP 是基于文本的协议,采用 ISO10646 字符集,使用 UTF-8 编码方案,可由标准 HTTP 或 MIME 解析器解析。
- 安全性:使用网页安全机制,具有一定的安全保障。
- 独立于传输:可使用不可靠数据报协议(UDP)、可靠数据报协议(如基于 TCP 的可靠流协议)等多种传输协议。
- 多服务器支持:每个流可放在不同服务器上,用户端自动与不同服务器建立几个并发控制连接,媒体同步在传输层执行。
- 与 HTTP 友好:明智地采用了 HTTP 观念,使现有的网络结构都可重用。
- 协议结构:
- 请求和响应:使用类似于 HTTP 的请求 - 响应机制。客户端发送请求命令来控制媒体流的操作,服务器返回相应的响应消息。
- 方法:定义了一系列方法来描述客户端和服务器之间的交互操作。常见的方法包括 OPTIONS、DESCRIBE、SETUP、PLAY、PAUSE、TEARDOWN 等。
- 状态码:使用状态码来表示响应的结果,由三位数字组成,类似于 HTTP 状态码。例如,200 表示请求成功,404 表示请求的资源未找到,500 表示服务器内部错误。
- 会话标识:使用会话标识(Session ID)来标识特定的媒体流传输会话。会话标识在 SETUP 请求后由服务器分配,并在后续的请求和响应消息中使用。
- 工作原理:
- 连接建立前:
- 客户端向服务器发送 OPTIONS 请求,查询服务器支持的 RTSP 方法。
- 服务器返回包含其支持的方法的响应。
- 媒体描述获取:
- 客户端向服务器发送 DESCRIBE 请求,获取媒体资源的描述信息,如编码格式、比特率等。
- 服务器返回描述信息,一般参照 SDP(Session Description Protocol)协议格式。
- 会话建立:
- 客户端根据描述信息向服务器发送 SETUP 请求,建立媒体流传输会话。请求信息主要包括流媒体传输的初始化信息,如传输协议、地址、端口等。
- 服务器返回响应,其中包含实际选择的具体传输选项,并分配会话标识(Session ID)给客户端。
- 媒体流控制:
- 播放:客户端使用分配的会话标识发送 PLAY 请求,通知服务器以 SETUP 指定的传输机制开始发送数据。当多个 PLAY 请求到达时,服务器会将请求排成队列,顺序执行。
- 暂停:客户端发送 PAUSE 请求,请求服务器的媒体流传输临时暂停,不释放资源,可以通过 range 参数在指定时间点暂停。
- 快进、快退等操作(可选):一些客户端可能支持通过特定的请求参数实现快进、快退等操作,但这不是 RTSP 标准的必需功能。
- 会话终止:
- 客户端发送 TEARDOWN 请求,停止给定 URL 流发送,释放相关资源。
- 传输过程中的控制信息交互:在媒体流传输过程中,客户端和服务器通过 RTCP 协议交换控制信息,如同步、丢包统计等,以实现实时同步、传输质量监控和网络适应等功能。
- 连接建立前:
- 常用方法详解:
- OPTIONS:一般用于客户端主动发出,获取服务器支持的方法,可以在任何时候发送,不影响服务器的状态。
- DESCRIBE:客户端向服务器获取 URL 指定的媒体对象的描述信息。
- SETUP:客户端向服务器请求建立会话并准备传输。
- PLAY:客户端主动通知服务器以 SETUP 指定的传输机制开始发送数据。
- PAUSE:客户端请求服务器的媒体流传输临时暂停。
- TEARDOWN:请求停止给定 URL 流发送,释放相关资源。
- 与其他流媒体协议的比较:
- 与 HLS 相比:HLS 基于 HTTP 传输,将音视频流切分为多个小片段,便于通过 HTTP 服务器或 CDN 进行分发,支持自适应码率传输,但延迟较高,通常在 10 秒以上,不适合实时交互场景。而 RTSP 与 RTP、RTCP 协议搭配使用,支持低延迟的实时音视频传输,适用于视频监控、在线教育等实时场景,但不适合通过 HTTP 代理或 CDN 进行分发,在大规模直播场景中可能面临性能瓶颈。
- 与 MPEG-DASH 相比:MPEG-DASH 也是基于 HTTP 传输的通用的自适应码率流媒体协议,将音视频流切分为多个小片段,支持自适应码率传输和 CDN 分发,且无需专门的服务器,可以使用普通 HTTP 服务器进行部署。但它的延迟同样较高,不适用于实时交互场景,且由于较新,某些设备和浏览器可能不支持该协议。
- 与 WebRTC 相比:WebRTC 是基于浏览器的实时音视频通信协议,支持端对端的低延迟传输,无需插件,可以在支持的浏览器上直接使用,适用于视频会议、在线聊天等实时交互场景,但互操作性和扩展性较差。
- 应用场景:
- 视频监控:可以实现实时监控画面的传输和播放,满足远程查看和监控的需求。
- 在线教育:支持在线课堂的实时音视频传输,帮助老师和学生进行远程互动教学。
- 远程会议:使得远程会议参与者能够实时分享和观看音视频内容,提高会议效率和参与感。
- 开发模块:
RTSP相关的,大牛直播SDK实现了跨平台的轻量级RTSP服务模块和RTSP播放模块。
轻量级RTSP服务模块:
- [基础功能]支持Windows/Linux(含x86_64|aarch64)/Android/iOS平台RTMP直播SDK除推送RTMP外的所有常规功能;
- [音频格式]AAC;
- [视频格式]H.264、H.265;
- [协议类型]RTSP;
- [传输模式]支持单播和组播模式;
- [端口设置]支持RTSP端口设置;
- [鉴权设置]支持RTSP鉴权用户名、密码设置;
- [获取session连接数]支持获取当前RTSP服务会话连接数;
- [多服务支持]支持同时创建多个内置RTSP服务;
- [RTSP url回调]支持设置后的rtsp url通过event回调到上层。
RTSP直播播放模块:
如不单独说明,系Windows、Linux、Android、iOS全平台支持。
- [支持播放协议]高稳定、超低延迟、业内首屈一指的RTSP直播播放器SDK;
- [多实例播放]支持多实例播放;
- [事件回调]支持网络状态、buffer状态等回调;
- [视频格式]支持H.265、H.264,此外,还支持RTSP MJPEG播放;
- [音频格式]支持AAC/PCMA/PCMU;
- [H.264/H.265软解码]支持H.264/H.265软解;
- [H.264硬解码]Windows/Android/iOS支持特定机型H.264硬解;
- [H.265硬解]Windows/Android/iOS支持特定机型H.265硬解;
- [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码;
- [RTSP模式设置]支持RTSP TCP/UDP模式设置;
- [RTSP TCP/UDP自动切换]支持RTSP TCP、UDP模式自动切换;
- [RTSP超时设置]支持RTSP超时时间设置,单位:秒;
- [RTSP 401认证处理]支持上报RTSP 401事件,如URL携带鉴权信息,会自动处理;
- [缓冲时间设置]支持buffer time设置;
- [首屏秒开]支持首屏秒开模式;
- [复杂网络处理]支持断网重连等各种网络环境自动适配;
- [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
- [音视频多种render机制]Android平台,视频:surfaceview/OpenGL ES,音频:AudioTrack/OpenSL ES;
- [实时静音]支持播放过程中,实时静音/取消静音;
- [实时音量调节]支持播放过程中实时调节音量;
- [实时快照]支持播放过程中截取当前播放画面;
- [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
- [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
- [渲染镜像]支持水平反转、垂直反转模式设置;
- [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
- [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
- [解码前视频数据回调]支持H.264/H.265数据回调;
- [解码后视频数据回调]支持解码后YUV/RGB数据回调;
- [解码前音频数据回调]支持AAC/PCMA/PCMU数据回调;
- [音视频自适应]支持播放过程中,音视频信息改变后自适应;
- [扩展录像功能]完美支持和录像SDK组合使用。
RTMP
RTMP(Real Time Messaging Protocol)即实时消息传输协议,是一种设计用来进行实时数据通信的网络协议。以下是关于 RTMP 的详细介绍:
一、协议概述
-
定义和目的:
- RTMP 是 Adobe 公司开发的一种用于在互联网上进行实时音频、视频和数据传输的协议。它的主要目的是实现低延迟的流媒体传输,以便在网络上实时播放音频和视频内容。
- 该协议被广泛应用于在线视频平台、直播平台、视频会议系统等领域,为用户提供高质量的实时流媒体服务。
-
工作原理:
- RTMP 基于 TCP 协议,使用可靠的连接来确保数据的准确传输。它将音频、视频和其他数据封装成消息,并通过 TCP 连接进行传输。
- RTMP 协议分为三个层次:网络层、消息层和块层。网络层负责建立和维护 TCP 连接;消息层负责定义和处理各种类型的消息,如音频、视频、控制消息等;块层负责将消息分割成较小的块,以便在网络上进行传输。
二、协议特点
-
低延迟:
- RTMP 协议具有较低的延迟,能够实现实时的音频和视频传输。这使得它非常适合用于直播、视频会议等对实时性要求较高的应用场景。
- 低延迟的实现主要得益于 RTMP 协议的高效数据传输机制和优化的网络传输策略。
-
可靠性高:
- 由于 RTMP 基于 TCP 协议,因此它具有较高的可靠性。TCP 协议能够确保数据的准确传输,避免数据丢失和乱序。
- RTMP 协议还采用了一些错误检测和纠正机制,如校验和、重传等,进一步提高了数据传输的可靠性。
-
支持多种媒体格式:
- RTMP 协议支持多种音频和视频格式,如 H.264、AAC 等。这使得它能够适应不同的应用场景和设备要求。
- 同时,RTMP 协议还支持动态码率调整、分辨率调整等功能,能够根据网络状况和设备性能自动调整媒体流的质量。
-
易于集成:
- RTMP 协议被广泛应用于各种流媒体服务器和客户端软件中,具有良好的兼容性和可扩展性。
- 开发人员可以使用各种编程语言和开发工具来实现 RTMP 协议的集成,如 Flash、Java、Python 等。
三、应用场景
-
在线视频平台:
- RTMP 协议被广泛应用于在线视频平台,如 YouTube、腾讯视频、优酷等。这些平台使用 RTMP 协议来实现视频的上传、转码、存储和播放等功能。
- 用户可以通过浏览器或客户端软件观看在线视频,享受高质量的视频播放体验。
-
直播平台:
- RTMP 协议是直播平台的核心技术之一,它能够实现低延迟的视频直播和互动。
- 直播平台通常使用 RTMP 协议将主播的视频流推送到服务器,然后再将视频流分发到各个观众的客户端上。观众可以通过弹幕、点赞、评论等方式与主播进行互动。
-
视频会议系统:
- RTMP 协议也被应用于视频会议系统中,实现实时的音频和视频通信。
- 视频会议系统通常使用 RTMP 协议将参会者的视频流和音频流传输到服务器,然后再将这些流分发到其他参会者的客户端上。参会者可以通过视频会议系统进行远程沟通和协作。
四、优势和不足
-
优势:
- 低延迟:能够实现实时的音频和视频传输,适用于对实时性要求较高的应用场景。
- 可靠性高:基于 TCP 协议,具有较高的可靠性,能够确保数据的准确传输。
- 支持多种媒体格式:能够适应不同的应用场景和设备要求。
- 易于集成:被广泛应用于各种流媒体服务器和客户端软件中,具有良好的兼容性和可扩展性。
-
不足:
- 依赖 Adobe Flash Player:在过去,RTMP 协议主要依赖 Adobe Flash Player 进行播放。然而,随着 Flash Player 的逐渐淘汰,RTMP 协议的播放方式也面临着一些挑战。
- 不支持移动端:RTMP 协议在移动端的支持相对较弱,需要使用专门的播放器或插件才能实现播放。
- 占用带宽较高:由于 RTMP 协议需要传输高质量的音频和视频流,因此它占用的带宽相对较高。在网络状况不佳的情况下,可能会出现卡顿和延迟等问题。
五、开发模块
RTMP的技术方案,大牛直播SDK于2015年发布了RTMP推流和RTMP播放模块,甚至还有RTSP转RTMP推送的,以Windows为例,我们实现的功能如下:
RTMP直播推送模块
- 音频编码:AAC/SPEEX;
- 视频编码:H.264、H.265;
- 推流协议:RTMP;
- [音视频]支持纯音频/纯视频/音视频推送;
- [屏幕/摄像头]支持帧率、关键帧间隔(GOP)、码率(bit-rate)设置;
- [屏幕]支持屏幕裁剪,根据帧率和推送分辨率,自动推荐码流;
- [摄像头]支持摄像头选择、分辨率设置、帧率设置;
- [摄像头]摄像头支持水平反转、垂直反转、0° 90° 180° 270°旋转;
- [屏幕]支持DXGI采集设置、启/停用Aero;
- [音频]采集麦克风;
- [音频]采集扬声器;
- [预览]支持推送端实时预览;
- 支持实时静音、取消静音;
- [对接服务器]支持自建标准RTMP服务器或CDN;
- 支持断网自动重连、网络状态回调;
- 屏幕和摄像头合成/多层合成;
- 支持窗口采集(一般不建议使用);
- 支持实时动态水印;
- 支持实时快照;
- 支持降噪处理、自动增益控制、VAD端点检测;
- 支持扬声器和麦克风混音;
- 支持外部编码前音视频数据对接;
- 支持外部编码后音视频数据对接;
- 支持RTMP扩展H.265(需设备支持H.265特定机型硬编码)和Enhanced RTMP;
- 支持特定机型硬编码;
- 支持实时音量调节;
- 支持扩展录像模块;
- 支持Unity接口;
- 支持H.264扩展SEI发送模块;
- 支持Windows7及以上版本。
RTMP播放模块
如不单独说明,系Windows、Linux(含x86_64|aarch64)、Android、iOS全平台支持。
- [支持播放协议]高稳定、超低延迟(毫秒级,行业内几无效果接近的播放端)、业内领先的RTMP直播播放器SDK;
- [多实例播放]支持多实例播放;
- [事件回调]支持网络状态、buffer状态等回调;
- [视频格式]支持RTMP扩展H.265和Enhanced RTMP H.265,H.264;
- [音频格式]支持AAC/PCMA/PCMU/Speex;
- [H.264/H.265软解码]支持H.264/H.265软解;
- [H.264硬解码]Windows/Android/iOS支持特定机型H.264硬解;
- [H.265硬解]Windows/Android/iOS支持特定机型H.265硬解;
- [H.264/H.265硬解码]Android支持设置Surface模式硬解和普通模式硬解码;
- [缓冲时间设置]支持buffer time设置;
- [首屏秒开]支持首屏秒开模式;
- [低延迟模式]支持低延迟模式设置(公网200~400ms);
- [复杂网络处理]支持断网重连等各种网络环境自动适配;
- [快速切换URL]支持播放过程中,快速切换其他URL,内容切换更快;
- [音视频多种render机制]Android平台,视频:SurfaceView/GLSurfaceView,音频:AudioTrack/OpenSL ES;
- [实时静音]支持播放过程中,实时静音/取消静音;
- [实时音量调节]支持播放过程中实时调节音量;
- [实时快照]支持播放过程中截取当前播放画面;
- [只播关键帧]Windows平台支持实时设置是否只播放关键帧;
- [渲染角度]支持0°,90°,180°和270°四个视频画面渲染角度设置;
- [渲染镜像]支持水平反转、垂直反转模式设置;
- [等比例缩放]支持图像等比例缩放绘制(Android设置surface模式硬解模式不支持);
- [实时下载速度更新]支持当前下载速度实时回调(支持设置回调时间间隔);
- [ARGB叠加]Windows平台支持ARGB图像叠加到显示视频(参看C++的DEMO);
- [解码前视频数据回调]支持H.264/H.265数据回调;
- [解码后视频数据回调]支持解码后YUV/RGB数据回调;
- [解码后视频数据缩放回调]Windows平台支持指定回调图像大小的接口(可以对原视图像缩放后再回调到上层);
- [解码前音频数据回调]支持AAC/PCMA/PCMU/SPEEX数据回调;
- [音视频自适应]支持播放过程中,音视频信息改变后自适应;
- [扩展录像功能]完美支持和录像SDK组合使用。