PS封包到rtp中

GB28181利用RTP协议推送264的PS封包音视频 实现满足GB28181国标的设备基本流程(参看上一篇博客链接)之后,收到实时音视频点播请求后,需要进行RTP协议推送音视频。 从sip解析到invite和ack消息,可以拿到流媒体接收的ip地址和port端口,之后利用socket进行udp发送音视频数据RTP包到接收服务端。 发送RTP包,需要了解RTP协议,以及RTP数据定义。另外,GB28181国标要求发送264的PS封包RTP负载,因此,还... 阅读详情

相关索引:https://blog.youkuaiyun.com/knowledgebao/article/details/84776869


PS封包到rtp中

PS Header(2.5.3.3)

PS System Header

PS system Map

PES Header


PS封包到rtp中

 针对H264 做如下PS 封装:每个IDR NALU 前一般都会包含SPS、PPS 等NALU,因此将SPS、PPS、IDR 的NALU 封装为一个PS 包,包括ps 头,然后加上PS system header,PS system map,PES header+h264 raw data。所以一个IDR NALU PS 包由外到内顺序是:PSheader| PS system header | PS system Map | PES header | h264 raw data。对于其它非关键帧的PS 包,就简单多了,直接加上PS头和PES 头就可以了。顺序为:PS header | PES header | h264raw data。以上是对只有视频video 的情况,如果要把音频Audio也打包进PS 封装,也可以。当有音频数据时,将数据加上PES header 放到视频PES 后就可以了。顺序如下:PS 包=PS头|PES(video)|PES(audio),再用RTP 封装发送就可以了。

  • PS header:00 00 01 BA  总共14个字节
  • System header:00 00 01 BB :总共18个字节
  • System Map:00 00 01 BC 总共24个字节
  • PES header :00 00 01 (C0-DF) 音频(E0-EF)视频,总共14个字节
  • 关键帧PS header | PS system header | PS system Map | PES header | H264
  • 非关键帧PS header |PES header | h264

具体解释详见下边内容:

基于RTP的PS封装首先按照ISO/IEC 13818-1:2000将视音频流封装成PS包,再将PS包以负载的方式封装成RTP包。PS包的主要参数设置针对本文档规定的几种视音频格式,PS包中的流类型(stream_type)的取值如下:

  1. MPEG-4视频流:0x10;
  2. H.264视频流:0x1B;
  3. SVAC视频流:0x80;
  4. G.711音频流:0x90;
  5. G.722.1音频流:0x92;
  6. G.723.1音频流:0x93;
  7. G.729音频流:0x99;
  8. SVAC音频流:0x9B。

PS包的RTP封装格式参照RFC2250,RTP的主要参数设置如下:

  1. 负载类型(payload type):96;
  2. 编码名称(encoding name):PS;
  3. 时钟频率(clock rate):90kHz;
  4. SDP描述中“m”字段的“media”项:video。

抓包分析具体详见《SMS6.4_PS_SYS_MAP_PES.ps》《ISO_IEC_13818-1_2000(E).pdf》

具体详见文章底部的参考资料。

PS Header(2.5.3.3)

PS System Header

PS system Map

PES Header

PES是Packetized Elementary Stream的简称,是将原始ES流打包后形成的,再将PES经过不同的打包方式可以组成MPEG program stream 和 MPEG transport stream,即PS流和TS流。

PES的组成结构如图,包括6个字节的包头字段,加上3个字节基本流信息字段,根据信息字段的设置可在之后附加其他字段。

PES结构

前三字节是包头起始标识字段,内容为0x000001

第四个字节是流ID字段,不同的流ID有不用的意义,如图,音频流ID范围从0xC0到0xDF,视频流ID范围从0xE0到0xEF。

PES流ID字段

第五六个字节是PES包长度,表示PES包头部在该字段之后的长度,单位是字节

接下来的第七八九字节是PES的扩展头部字段,用于设置流的基本信息,结构如图

PES可选扩展

第七字节的高两位是标识位,值为10b

第八字节的高两位是PTS和DTS指示位,00表示无PTS无DTS,01禁止使用,10表示PES头部字段会附加PTS结构,11表示PES头部字段会附加PTS和DTS结构

pts结构

 pts和dts结构

       其中PTS和DTS使用的是90KHZ时钟单位,即1PTS表示1/90000秒,PTS和DTS虽然是33位,但占用了5个字节

ESCR FLAG字段设为1,会在头部附加6个字节的ESCR结构,ES RATE FLAG字段设置为1,会在头部附加3个字节ES rate结构,其他标识位如果设置为1也会相应的在头部附加对应字段。

ES rate结构

ESCR结构


参考资料:

1,RTP协议全解析(H264码流和PS流)

2,PS封包总结

3,PS数据解析

4,ISO_IEC_13818-1_2000(E).pdf

5,RFC2250

6,PES结构详解

7,PS流的格式和解析总结

------------------有任何问题可以联系:knowlegebao@163.com

抓包实例解析rtp负载的ps流数据 不论是否为关键帧还是音视频都有这个包头,接下来我们来解析下rtp负载的ps数据。这里都是一些标志位,我们不管,接下来。的起始码,e0说明的就是视频流, 阅读详情

相关推荐

PS封包H264载荷数据详解

在前面的文章 GB28181利用RTP协议推送264的PS封包音视频中简单介绍了PS打包H264载荷的基本流程。 两种情况再复述如下: IDR NALU PS封包 将SPS、PPS、IDR作为一个PS负载,加上PS头,整体为 PSheader| PS system header | PS system Map | PES header | PES负载(SPS|PPS|IDR) 非IDR NALU...

热爱生活,忠于自己 1127

RTP协议全解析(H264码流和PS流)

1RTP Header解析 2、RTP荷载H264码流 2.1、单个NAL单元包 2.2、分片单元(FU-A) 3、RTP荷载PS流 3.1、PS包头 3.2、系统标题 3.3、节目映射流 3.4、PES分组头部

对牛乱弹琴 27万+

【音视频】H265-NALU-AVpacket-PS-RTP(GB28181)

解析H265视频流封装成PS流通过RTP包发送逻辑分析

gma999的博客 1761

流媒体基础-RTP封装PS流

RTP协议之PS流,基于GB28181协议,应用于监控行业使用

键盘敲的劈啪响 2527

h264 ps流vlc播放

因项目需要,需要摄像机接入GB2818网关并通过rtp ps流传输视频流,整理一下这几天的技术点。 一、ps流封包 ps流打包中I帧和P帧打包略有差异:I帧:ps头+ps系统头+ps map+PES头+H264 raw data,P帧:pes头+H264 raw data (P帧也可以加上ps头+ps map不影响播放)。可以用VLC播放器转码MP4文件(vlc功能真的很强大...

rui631483900的专栏 2562

GB28181技术基础之3 - RTP

一. RTP协议        实时传输协议 RTP(Real-time Transport Protocol)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的,后在RFC3550中进行更新。                RTP 的包格式: V P X CC M PT

跟随技术的脚步-linolzhang的专栏 4424

GB28181协议中的RTP封包陷阱:Java处理PS流时的3个避坑技巧

本文深入探讨了GB28181协议中Java处理PS流时常见的RTP封包陷阱,包括时间戳同步、PS流重组与边界处理、负载类型识别三大问题。针对每个问题提供了详细的解决方案和Java代码示例,帮助开发者有效规避技术风险,提升视频监控系统的稳定性和兼容性。

swift5iosmith的博客 309

【PS】PS OVER RTP

封包,分片,发送

突围 545

国标PS流打包和RTP发送代码

这个国标PS流打包/封包的代码来自于互联网,QuickGBLink在原先代码基础上做了一些改进。因为代码来自于别人的成果,基于互联网知识分享的精神,我们打算将其开源,希望能对更多学习和开发国标的开发者带来帮助。 这个源码集成了PS封包和RTP发送的功能,具体它支持: 1. 输入一个H264 NALU或一帧数据,对传入的数据打包成PS流,对数据进行切分,并用RTP发送。 2. 传入一个PS帧,...

QuickGBLink的博客 4931

GB28181 —— 9、基于Nvidia-JetsonNano板卡,C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

GB28181 —— 9、基于Nvidia-JetsonNano板卡,C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

279

GB28181 —— 8、基于鲁班猫2板卡,C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

GB28181 —— 8、基于鲁班猫板卡,C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

469

音视频相关索引

索引首页:https://blog.youkuaiyun.com/knowledgebao/article/details/84776046 h264和h265的区别:https://blog.youkuaiyun.com/knowledgebao/article/details/84647323 协议篇-RTSP:https://blog.youkuaiyun.com/knowledgebao/article/details/...

knowledgebao的博客 3096

GB28181 —— 4、C++编写GB28181设备端,完成将.h264文件读取转发至GB28181服务并可播放(附源码)

GB28181 —— 4、Win10下编写GB28181设备端,完成将.h264文件读取转发至GB28181服务并可播放

744

封装ts、ps、onvif

音视频-es-pes-ts/ps 视频 es-pes

jerry的博客 382

GB28181 —— 5、C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

C++编写GB28181设备端,完成将USB摄像头视频实时转发至GB28181服务并可播放(附源码)

1419

Agisoft Metashape相机标定笔记

使用Metashape进行自动相机标定是可能的。(可选:使用打印的棋盘格图案,但需保证它是平坦的且单元格是正方形)。相机标定步骤支持全相机标定矩阵的估计,包含非线性的畸变参数。相机模型的细节请参照附录D——相机模型板块。:在通用的工作流程中,相机标定步骤可以跳过。因为Metashape会在图像定向过程中进行相机自标定。但是,如果定向结果不稳定,例如,由于影像之间缺乏连接点,额外进行单独的相机标定步骤也许是有用的。

天桥飞熊的博客 3974

VLC 接收H264、TS、PS流SDP写法

博主封装的是PS流,之前用vlc只是播放了h264流,写法如下: m=video 8002 RTP/AVP 96 a=rtpmap:96 H264/90000 用这个测试了半天,不是绿屏就是白板,一直在找是不是封包的问题,百度了一下,找到TS写法: m=video 8002 RTP/AVP 96 a=rtpmap:96 MP2T/90000

发展是曲折的但也是前进的 1898

【电商风控】电商风控标注是什么

本篇文章给大家谈谈。

866

ps封装及rtp/udp发送

简介 本文代码功能为,h264封装为ps,再用rtp/udp发送 代码 #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <signal.h> #include <sys/typ...

yingyemin的专栏 4547

在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合

本文介绍了在Mac上搭建本地AI工作流的方法,结合Dify平台和DeepSeek模型。Dify是一个开源的大语言模型应用开发平台,支持可视化AI应用开发。部署步骤包括:1)安装Homebrew和Docker;2)克隆Dify代码库;3)配置环境变量并启动服务。同时,使用Ollama工具本地部署DeepSeek模型,将其集成到Dify中创建聊天助手。通过配置模型接口和新建应用,用户可以在本地环境中实现AI对话功能。这种方案既保证了数据隐私,又提供了灵活的AI应用开发能力。

Linda的自动化测试之旅 1535

汇川伺服驱动器参数优化实战指南

本文详细介绍了汇川伺服驱动器参数优化的实战技巧,涵盖控制模式选择、电子齿轮比调整、刚性匹配与振动抑制等关键内容。通过实际案例和实用技巧,帮助工程师快速掌握伺服驱动器参数调校方法,提升设备运行精度和稳定性。特别针对高精度定位和高速响应场景提供了专业指导。

weixin_29070721的博客 734
上一篇: 协议篇-GB28181
下一篇: YUV、RGB-各种格式及转换
knowledgebao
博客等级 码龄15年 401粉丝 198原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值