随笔 - 936  文章 - 0  评论 - 3  阅读 - 30万

EasyGBS中基于 RTP 的音视频数据 PS 封装

在国标GB28181协议中,视频传输基本都由两个模块构成,EasyGBS包含两个模块:信令服务和流媒体服务。本节主要为大家解释下流媒体服务中关于音视频数据的PS封装。

PS封装介绍:

PS是Program Stream(程序流或节目流)的简称。程序流将一个或多个分组但有共同时间基准的基本数据流(PES)合并成一个整体流。它是为可靠稳定的储存媒介如光盘而设计的。一般来说,采用MPEG2-HD格式的高清数码摄像机一般以"MPEG2-PS"来保存文件;而采用AVCHD格式的高清摄像机则通常以".M2TS"或".MTS"保存文件。

基于RTP的PS封装首先按照ISO/IEC13818-1:2000 将视音频流封装成 PS 包,再将 PS 包以负载的方式封装成 RTP 包。

进行PS封装时,应将每个视频帧封装为一个PS包,且每个关键帧的PS包中应包含系统头(System Header) 和 PSM(Program Stream Map),系统头和PSM放置于PS包头之后、第一个PES包之前。

典型的视频关键帧 PS 包结构如图所示, 其中 PESV 为视频 PES 包,PESA 为音频 PES包,视频非关键帧的 PS 包结构中一般不包含系统头和 PSM。PS 包中各部分的具体数据结构参见 ISO/IEC13818-1: 2000 中的相关描述。

系统头应包含对 PS 包中码流种类的描述,其中视频和音频的流 ID(stream_id) 取值如下:

a) 视频流 ID:0xE0;

b) 音频流 ID:0xC0。

针对本文档规定的几种视音频格式,PSM 中流类型(stream_type) 的取值如下:

a) MPEG-4 视频流::x10;

b) H.264 视频流:0x1B;

c) SVAC 视频流:0x80;

d) G.711 音频流:0x90;

e) G.722.1 音频流:0x92;

f) G.723.1 音频流:0x93;

g) G.729 音频流:0x99;

h) SVAC 音频流:0x9B。

PS 包封装的其他具体技术规范详见 ISO/IEC13818-1:2000。

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

a) 负载类型(payloadtype) :96;

b) 编码名称(encoding name) :PS;

c) 时钟频率(clockrate) :90 kHz;

d) SDP 描述中“m”字段的“media”项:video。

posted on   EasyGBS  阅读(360)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示