问题:MPEG-TS、RTP帧结构
AI回答如下:
MPEG-TS帧结构
MPEG-TS(全称为MPEG-2 Transport Stream)是一种用于传输和存储包含视频、音频与通信协议各种数据的标准格式,主要用于实时传送的节目,如实时广播的电视节目。其帧结构主要由以下几个部分组成:
-
TS Packet(传输包):
- 大小:固定为188字节。
- 组成:每个TS包由TS Header(TS头)、Adaptation Field(适配域,可选)和Payload(负载)三部分组成。
- TS Header:固定4个字节,包含sync_byte(同步字节,固定为0x47)、transport_error_indicator(传输错误标志)、payload_unit_start_indicator(负载起始标志)等信息。
- Adaptation Field:长度可变,用于给不足188字节的数据做填充,或者插入节目时钟参考(PCR)等。
- Payload:包含实际的音视频数据或其他辅助数据,通常是PES(Packetized Elementary Stream)包。
-
PES Packet(分组化基本流包):
- PES包是在音视频数据上加了时间戳等对数据帧的说明信息,用于标识数据的起始和结束,以及数据的时间戳。
- PES包的内容包括开始码(如0x000001)、流ID、PES头长度、数据长度等信息,后跟实际的音视频数据。
-
ES(Elementary Stream):
- ES是基本的音视频数据流,未经打包和加时间戳的原始数据
RTP帧结构
RTP(Real-time Transport Protocol)是一种用于互联网上传输音频、视频等实时数据的网络协议。其帧结构主要关注于数据的封装和传输,而不是存储。
-
RTP Header(RTP头):
- 包含多个字段,如版本号(V)、填充标志(P)、扩展标志(X)、CSRC计数(CC)、标记(M)、负载类型(PT)、序列号(sequence number)、时间戳(timestamp)、同步源标识符(SSRC)等。
- RTP头之后是Payload(负载),即实际的音视频数据或其他数据。
-
Payload(负载):
- 负载数据可以是原始的音视频数据,也可以是经过某种封装(如MPEG-TS)后的数据。
- 在Miracast等应用中,RTP通常用于封装MPEG-TS数据包,其中MPEG-TS数据包包含了音视频数据和必要的封装信息。
总结
- MPEG-TS帧结构主要关注于数据的封装和存储,适合用于实时传送的节目。
- RTP帧结构主要关注于数据的实时传输,通过RTP头提供必要的传输信息,并将音视频数据或其他数据作为负载进行传输。
- 在实际应用中,RTP可以封装MPEG-TS数据包进行传输,实现音视频数据的实时传输和播放。