下面以“大牛直播SDK 的 RTSP 播放器遇到 RTP 不带 Marker 位(M bit)”为切入点,结合 RTP/RTCP 基础 与 H.264/H.265/AAC 的负载规范,说明发送端如何规范打包 二、发送端(打包器)如何“规范打包”:H.264/H.2651) 通用约束 时间戳:同一帧(AU)内的所有 RTP 包 使用相同的 RTP 时间戳;视频时钟为 90 kHz。 负载≈1200–1300B; TCP/RTSP 内嵌(interleaved)虽无 UDP 头,但仍建议与 UDP 一致的分片尺寸,利于复用与中间件处理。 三、发送端(打包器)如何“规范打包”:AAC(MPEG4-GENERIC) AU 头:按 SDP 中的 sizeLength/indexLength/indexDeltaLength 生成 AU-headers-section 接收端(大牛直播SDK RTSP 播放器侧):实现 “M 位优先 + 时间戳变化 + FU 完整 + 超时兜底” 的复合切帧算法,这既符合规范精神,又能兼容“不带 M 位”的常见设备。
RTSP被用于建立的控制媒体流的传输,它为多媒体服务扮演“网络远程控制”的角色。尽管有时可以把RTSP控制信息和媒体数据流交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。 媒体数据的传送可通过RTP/RTCP等协议来完成。 一次基本的RTSP操作过程是:首先,客户端连接到流服务器并发送一个RTSP描述命令(DESCRIBE)。 客户端再分析该SDP描述,并为会话中的每一个流发送一个RTSP建立命令(SETUP),RTSP建立命令告诉服务器客户端用于接收媒体数据的端口。 流媒体连接建立完成后,客户端发送一个播放命令(PLAY),服务器就开始在UDP上传送媒体流(RTP包)到客户端。 在播放过程中客户端还可以向服务器发送命令来控制快进、快退和暂停等。 第五步: 数据传送播放中 S->C:发送流媒体数据 // 通过RTP协议传送数据 6.
关于使用rtp推流,TSINGSEE青犀视频团队实际已经研发了很长时间,其中也碰到了不少问题,比如RTP推流客户端无法解析播放,或者遇到不同的报错,但这些目前都已经有了比较完善的解决办法。 在使用RTP推流时,默认ffmpeg使用的打包模式是packetization-mode=1,本文我们和大家分享另一个比较实用的技巧,就是使用ffmpeg配置rtp打包模式。 如何修改打包模式? 关于RTP打包模式的说明如下: 目前ffmpeg默认使用的是1: Not interleaved 模式,针对客户的需要,服务端不支持STAP-A的组包模式,需要每个包单独发送,所以需要配置Single 配置完成后,还有个问题,需要配置pkt size,否则I帧无法完整发送,默认pkt size是1024个字节,而一般I帧都大于1024个字节,导致I帧发送不完整,图像传输失败,需要配置pkt size,在rtp url后面加上如下所示内容: rtp://192.168.99.138:6666?
前面我们花了较多的篇幅来介绍了RTSP协议的一些细节,但是rtsp传输,本质上涉及三种协议,RTSP、RTP以及RTCP。RTSP主要负责连接建立,销毁及一些其他的控制。 而实际涉及媒体数据传输使用的是RTP协议,本节我们来介绍一下RTP协议。 RTP概览 RTP是一种应用层协议,传输层协议可以是TCP或者UDP(UDP多一些)! RTP数据包由两部分组成,一部分是RTP Heaeder,一部分是RTP body,RTP Header占用最少12个字节,最多72个字节;另一部分是RTP Payload,用来封装实际的数据负载,如封装 下面我们来仔细看下RTP Header和RTP Body的组织形式! RTP包格式示意图 ? 值为10,版本号为2,我们与wireshark的抓包解析对比一下: ? Padding ? 值为0,表示不填充。wireshark的抓包如下: ? X(扩展) ? 值为0。
❝将PCM数据打包为RTP包。 /* 数据有效性判断 */ if (info.encoder_type == AudioEncoder::CodecType::kOther) return; 打包为 RTP // 对于连续的音频包,需要连续的timestamp。 timestamp += sizeof(int16_t) * encoder->NumChannels() * encoder->RtpTimestampRateHz()/100; /* 创建rtp包 packet.SetTimestamp(timestamp); packet.SetSsrc(ssrc); uint8_t *payload = packet.SetPayloadSize(buffer.size()); /* 装载rtp
问题背景: 前面讲解了PS、TS、FLV这三种媒体封装格式,现在新开一个系列讲解下传输协议,这里面会包含RTP、RTSP、HLS、RTMP等。 RTP协议既可以理解为传输层也可以理解为应用层,这么说是因为RTP负载可以放到RTSP上进行传输,通过二元交织通道方式实现。 2.RTP数据包的生成: 通过RTSP等协议的SDP信息协商好了RTP数据包的发送目的和传输方式,我们就需要把音视频数据打包成RTP包,用UDP发送给接收端了。 也就是说一个NALU切片时,第一个切片的SE是10,然后中间的切片是00,最后一个切片时11。 R: 1 bit 保留位必须设置为0,接收者必须忽略该位。 FU indication 十六机制:0x7C 二进制:0111 1100 FU header 十六进制:0x85 二进制:1000 0101 这里的SE是10,则说明该RTP包承载的NALU的第一个切片
特点:RTSP协议本身不传输媒体数据,而是通过控制连接建立命令和控制,媒体数据通过其他协议(如RTP)传输。它提供了丰富的控制选项,方便用户操作,且可以穿越NAT和防火墙。应用场景:1. RTP(Real-time Transport Protocol)简介:RTP是一个实时传输媒体数据的协议,通常与RTSP一起使用。它负责在网络上传输音视频数据。 直播服务 应用场景:在直播场景中,RTP协议为高质量的音视频传输提供了保障,RTP能确保观众能够实时观看到流畅、清晰的视频内容。 总结RTMP、RTSP、RTP、HLS、DASH这些协议在流媒体传输领域各有特点,但也有一些共同点。分别在实时视频传输中各有优势,选择哪种协议取决于具体的应用场景、网络条件以及设备兼容性等因素。 RTMP、RTSP、RTP、HLS、DASH这些协议在服务于流媒体传输方面有着共同的目标和追求,同时也在各自擅长的领域发挥着重要作用。
背景 在事先Android平台RTSP、RTMP转GB28181网关之前,我们已经实现了Android平台GB28181的接入,可实现Android平台采集到的音视频数据,编码后,打包按需发到GB28181 和我们之前实现的轻量级RTSP服务网关模块类似,我们要做的是,实现RTSP或RTMP流,按需打包对接到GB28181服务平台。 轻量级RTSP服务模块、RTSP|RTMP转GB28181网关模块和内置RTSP网关模块的区别和联系: 内置轻量级RTSP服务模块和内置RTSP网关模块,核心痛点是避免用户或者开发者单独部署RTSP或者 lastExceptionInfo:"")); // 10毫秒后,停止信令, 然后重启 handler.postDelayed(new Runnable() { @Override gb28281_heart_beart_timeout sip start"); gb28181_agent_.start(); } } },10
二、RTSP / RTP 协议机制深度解读要理解轻量级 RTSP 服务 SDK 的价值,必须先回顾 RTSP 与 RTP 的核心机制。 简而言之:RTSP 管“会话”,RTP 管“数据”,SDP 管“说明”。 内置协议栈:RTSP/RTP/SDP 由 SDK 自研实现,不依赖第三方服务。 多会话能力:单设备支持多客户端同时拉流。 四、关键技术实现细节 RTP 打包 视频(H.264/H.265):支持 FU-A(大帧分片)、STAP-A(多帧打包)。 音频(AAC):每帧 1024 个采样点,时间戳递增。 从 技术层面 来看,它是对 RTSP/RTP/SDP 标准协议的工程化、轻量化实现,使得任意 Android 设备都能以最小的依赖成本,直接对外提供合规的实时流。
此时得到的为原始数据 涉及技术或协议: 摄像机:CCD、CMOS 拾音器:声电转换装置(咪头)、音频放大电路 2、数据编码: 使用相关硬件或软件对音视频原始数据进行编码处理(数字化)及加工(如音视频混合、打包封装等 2、RTSP(Real Time Streaming Protocol,实时流传输协议) RTSP定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP提供了一个可扩展框架,数据源可以包括实时数据与已有的存储的数据。该协议目的在于控制多个数据发送连接,为选择发送通道如UDP、组播UDP与TCP提供途径,并为选择基于RTP上发送机制提供方法。 代理服务器的缓存功能也同样适用于RTSP,并且因为RTSP具有重新导向功能,可根据实际负载情况来切换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。 RTCP和RTP一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。
2、RTSP(Real Time Streaming Protocol,实时流传输协议) RTSP定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP提供了一个可扩展框架,数据源可以包括实时数据与已有的存储的数据。该协议目的在于控制多个数据发送连接,为选择发送通道如UDP、组播UDP与TCP提供途径,并为选择基于RTP上发送机制提供方法。 RTSP语法和运作跟HTTP/1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。 代理服务器的缓存功能也同样适用于RTSP,并且因为RTSP具有重新导向功能,可根据实际负载情况来切换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。 RTCP和RTP一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。
随着H.265的普及,越来越多的开发者希望大牛直播SDK(Github)能支持低延迟的RTSP H.265播放,并分享相关经验: 实现思路: 对rtsp来说,要播放h265只要正确解析sdp和rtp包即可 sprop-vps, sprop-sps, sprop-pps等等, 具体请参考相关 文档,建议解析sprop-vps, sprop-sps, sprop-pps. 2.2 SDP 举例: m=video 0 RTP RTP 打包格式 实际中其实就用到两种格式,一种是一个nal单元打包到一个rtp包中。 一种是nal单元比较大,分片打包在多个rtp中. 3.1 单个Nal单元打包: PayloadHdr 把 NAL单元头填入就好. 3.2 Nal单元分片打包: PayloadHdr还是拷贝NAL 相关资料分享:RTP Payload Format for HEVC:http://pike.lysator.liu.se/docs/ietf/rfc/77/rfc7798.xml
打包多种流媒体协议(RTSP/RTMP/HLS),支持协议间的互相转换,提供一站式的服务。 使用epoll+线程池+异步网络IO模式开发,并发性能优越。 RTSPS 服务器,支持亚马逊echo show这样的设备 RTSP 播放器,支持RTSP代理,支持生成静音音频 RTSP 推流客户端与服务器 支持 rtp over udp rtp over tcp rtp over http rtp组播 四种RTP传输方式 。 支持H265编码 服务器支持RTSP推流(包括rtp over udp rtp over tcp方式) 支持任意编码格式的rtsp推流,只是除H264/H265+AAC外无法转协议 RTMP RTMP Sierra(10.12.1) + xcode8.3.1 Homebrew 1.1.3 cmake 3.8.0 android-ndk-r14b 编译 编译(Windows) 我的编译环境 windows 10
二、协议拼装:RTSP/SDP/RTP/RTCP/RTMP 的边界把转发做稳,首要是把边界划清楚: RTSP(控制层):常见为 1.0 版本;2.0 在语义和报文上与 1.0 并非完全兼容。 RTP/RTCP(承载层):视频常见 H.264/H.265 负载规范;AAC 音频有各自打包规则。RTCP 提供丢包/抖动/时钟校正等统计反馈。 TCP 内嵌(穿透友好,弱网更稳,时延略高) RTP/RTCP 复用在 RTSP TCP 连接 内,通过 channel 编号区分:SETUP rtsp://cam/trackID=1 RTSP/1.0 AAC:RTP 打包有固定帧步进(常见 1024 samples/帧)。 RTCP:SR/RR 提供丢包、抖动、RTP↔参考时钟映射,可用来指导缓冲深度、网络拥塞控制和 TCP/UDP 切换策略。 十、低延迟与稳定性的 10 条军规 直通优先(Remux/Repayload First) 目标:最小延迟、最低功耗。
产品设计方面,媒体流支持最新GB28181-2016的UDP和TCP被动模式,参数配置,支持注册有效期、心跳间隔、心跳间隔次数、TCP/UDP信令设置,支持RTP Sender IP地址类型、RTP Socket 本地端口、SS-R-C、RTP socket 发送Buffer大小、RTP时间戳时钟频率设置,支持注册成功、注册超时、INVITE、ACK、BYE状态回调。 待收到服务端的Ack后,发送编码、打包后的媒体流数据。在此期间,按照设定间隔,定时发送keepalive。 如上图所示,模块除了常规的音视频参数配置外,系统可同时亦或单独实现如RTMP推送、RTSP推送、轻量级RTSP服务、实时录像、GB28181前端接入。 、RTMP和音视频采集、编码传输等有了多年积累,GB28181接入,对我们来说,只是在现有架构的基础上,完成信令交互和数据打包传输(H264, H265打包成PS流,然后拆成RTP包发送即可),RTP传输支持
之上,默认使用端口1935; 2.RTMPE在RTMP的基础上增加了加密功能; 3.RTMPT封装在HTTP请求之上,可穿透防火墙; 4.RTMPS类似RTMPT,增加了TLS/SSL的安全功能; 二、RTSP RTSP具有重新导向功能,可视实际负载情况来转换提供服务的服务器,可以避免过大的负载集中于同一服务器而造成延迟。 RTP协议常用于流媒体系统(配合RTSP协议),视频会议和一键通(Push to Talk)系统(配合H.323或SIP),使它成为IP电话产业的技术基础。 RTP协议和RTP控制协议RTCP一起使用,而且它是建立在用户数据报协议上的。RTP广泛应用于流媒体相关的通讯和娱乐,包括电话、视频会议、电视和基于网络的一键通业务(类似对讲机的通话)。 四、RTCP协议(RTP Control Protocol)RTP控制协议 提供数据分发质量反馈信息,RTCP和RTP一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。
3、RTSP(Real Time Streaming Protocol,实时流传输协议) RTSP定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP提供了一个可扩展框架,数据源可以包括实时数据与已有的存储的数据。该协议目的在于控制多个数据发送连接,为选择发送通道如UDP、组播UDP与TCP提供途径,并为选择基于RTP上发送机制提供方法。 RTSP语法和运作跟HTTP/1.1类似,但并不特别强调时间同步,所以比较能容忍网络延迟。 代理服务器的缓存功能也同样适用于RTSP,并且因为RTSP具有重新导向功能,可根据实际负载情况来切换提供服务的服务器,以避免过大的负载集中于同一服务器而造成延迟。 RTCP和RTP一起协作将多媒体数据打包和发送,定期在多媒体流会话参与者之间传输控制数据。
设置; [软编码参数配置]支持软编码profile、软编码速度、可变码率设置; 支持横屏、竖屏推流; Android平台支持后台service推送屏幕(推送屏幕需要5.0+版本);支持纯视频、音视频PS打包传输 技术实现由于我们已经有非常成熟的RTSP直播播放模块和RTSP转RTMP推送模块,实际上,RTSP转GB28181这块,和转RTMP原理类似,把拉流过来的RTSP音视频数据,回调上来,然后通过推送接口, _);MediaSessionDescription video_des = null;SDPRtpMapAttribute ps_rtpmap_attr = null;// 28181 视频使用PS打包 , 10*60*1000);//libPublisher.SetGBInitialTCPReconnectInterval(publisherHandle, 1000);//libPublisher.SetGBInitialTCPMaxReconnectAttempts 超时时间int rtsp_timeout = 10;libPlayer.SmartPlayerSetRTSPTimeout(player_handle_, rtsp_timeout);//设置RTSP
工程上,任何一次卡顿或时序漂移,背后几乎都能追溯到包结构约束(负载打包、分片/聚合)、钟域映射(RTP clock → wall clock)、**反馈回路(丢包/抖动/RTT)与控制语义(PLAY/PAUSE 如果说 RTP 负责“送数据”,RTSP 则负责“告诉系统什么时候、以何种方式去送”。 1.3 RTSP 与 RTP / RTCP 的协同关系RTSP 本身并不携带音视频内容。它的职责是会话建立 + 参数协商 + 状态管理,而数据面完全交给 RTP 与 RTCP。 Payload Type = 96 (H.264) RTCP Sender Report 示例 NTP Timestamp = 0xE44123C9B6000000 (2025-11-07 10 10:35:00,若当前系统时间为 10:35:00.300,则播放时需延迟 300 ms,保证帧按时渲染。
基于TCP/IP协议体系的一个应用层协议,RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输,该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。 RTSP/1.0 RTP 协议(媒体数据传输协议) Rtp数据协议负责对流媒体数据进行封包并实现媒体流的实时传输,每一个RTP数据报都由头部(Header)和负载(Payload)两个部分组成,其中头部前 这 样,头信息至少要占用40个字节,那么RTP载荷的最大尺寸为1460字 节。以H264 为例,如果一帧数据大于1460,则需要分片打包,然后到接收端再拆包,组合成一帧数据,进行解码播放。 缺点,实时性相对较差,直播的时候延迟比较高,通常要在10S以上; HTTP Live Streaming (HLS) HTTP Live Streaming 由 Apple 开发,旨在能够从 iPhone 原始文档 各品牌网络监控摄像头RTSP地址查询 五种常见流媒体协议 流媒体协议简介 流媒体传输协议介绍 流媒体传输协议RTP、RTCP、RTSP、RTMPS、HLS,究竟是个啥东东?