searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

如何把PS流解析出裸H264数据

2024-08-29 02:13:55
27
0

要从PS流(Program Stream)中解析出裸H.264数据,通常需要以下几个步骤:
一个完整的PS流通常包含以下结构:

  1. Pack Header:标识PS流的开始,包含时间戳等信息。

  2. System Header:包含系统层信息,如缓冲区大小等。

  3. Program Stream Map (PSM):描述包含的流(例如视频、音频)的类型和PID。

  4. PES Packet:每个PES包包含实际的媒体数据,如视频或音频流。PES包是我们需要解析的重点。

其中,PES Packet可能有多个,每个PES包中可能包含视频(H.264)、音频或其他数据。

解析过程概述

  1. 查找Pack Header:确认PS流的开始。

  2. 解析System Header:获取系统相关信息(可选)。

  3. 解析Program Stream Map:确定视频流的类型和PID(可能为H.264)。

  4. 解析PES Packet:查找包含H.264数据的PES包,并从中提取H.264裸流。

  5. 处理NALU:将提取出的H.264数据保存为裸流文件。

解析步骤详细说明

1. 查找Pack Header

PS流的开头是Pack Header,通常以0x000001BA为标志。解析这个头部可以确认PS流的开始位置。

2. 解析System Header (可选)

System Header通常跟在Pack Header之后,以0x000001BB为标志。它包含一些系统层的信息,如缓冲区大小等。这个部分对于解析H.264数据并不是必须的,所以可以选择跳过。

3. 解析Program Stream Map (PSM)

PSM以0x000001BC为标志,描述了PS流中包含的各个流的类型和PID。在这里,找到H.264视频流的类型(通常为0x1B)。

4. 解析PES Packet

PES Packet以到0x000001EF之间的标志开头(E0代表视频流)。每个PES包都有一个头部,头部之后是视频数据。跳过PES包头部后,直接提取视频数据部分。

5. 处理H.264 NALU单元

H.264数据由NALU单元组成,每个NALU单元以0x000001或0x00000001起始码开头。在PES包的有效载荷部分查找这些起始码,并将其提取出来。

0条评论
作者已关闭评论
常****林
4文章数
0粉丝数
常****林
4 文章 | 0 粉丝
原创

如何把PS流解析出裸H264数据

2024-08-29 02:13:55
27
0

要从PS流(Program Stream)中解析出裸H.264数据,通常需要以下几个步骤:
一个完整的PS流通常包含以下结构:

  1. Pack Header:标识PS流的开始,包含时间戳等信息。

  2. System Header:包含系统层信息,如缓冲区大小等。

  3. Program Stream Map (PSM):描述包含的流(例如视频、音频)的类型和PID。

  4. PES Packet:每个PES包包含实际的媒体数据,如视频或音频流。PES包是我们需要解析的重点。

其中,PES Packet可能有多个,每个PES包中可能包含视频(H.264)、音频或其他数据。

解析过程概述

  1. 查找Pack Header:确认PS流的开始。

  2. 解析System Header:获取系统相关信息(可选)。

  3. 解析Program Stream Map:确定视频流的类型和PID(可能为H.264)。

  4. 解析PES Packet:查找包含H.264数据的PES包,并从中提取H.264裸流。

  5. 处理NALU:将提取出的H.264数据保存为裸流文件。

解析步骤详细说明

1. 查找Pack Header

PS流的开头是Pack Header,通常以0x000001BA为标志。解析这个头部可以确认PS流的开始位置。

2. 解析System Header (可选)

System Header通常跟在Pack Header之后,以0x000001BB为标志。它包含一些系统层的信息,如缓冲区大小等。这个部分对于解析H.264数据并不是必须的,所以可以选择跳过。

3. 解析Program Stream Map (PSM)

PSM以0x000001BC为标志,描述了PS流中包含的各个流的类型和PID。在这里,找到H.264视频流的类型(通常为0x1B)。

4. 解析PES Packet

PES Packet以到0x000001EF之间的标志开头(E0代表视频流)。每个PES包都有一个头部,头部之后是视频数据。跳过PES包头部后,直接提取视频数据部分。

5. 处理H.264 NALU单元

H.264数据由NALU单元组成,每个NALU单元以0x000001或0x00000001起始码开头。在PES包的有效载荷部分查找这些起始码,并将其提取出来。

文章来自个人专栏
流媒体协议
3 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0