出处: ISOIEC 13818-1

PS流:

PS流由PSGOP组成,每个PSGOP是由I帧起始的多帧集合,每个GOP之间没有相互依赖信息,可以剪切拼接。

| PSGOP0 | PSGOP1 | PSGOP2 | PSGOP3 | PSGOP4 | ...... |

PSGOP:

PSGOP由一个或多个PS包组成,一个PS包包含一个PSH(PS Header)和若干个PES(Packetized Elementary Stream,ps流数据的基本单位)包,PSGOP的第一个PS包应该在包头PSH后跟一个PSM(program stream map,节目流映射)包。

PS包格式(PSM只有是PSGOP的第一个PS才需要):

| PSH | SystemHeader | PSM | PES0 | PES1 | PES2 | PES3 | PES4 | ...... |

PES包格式:

| PES header | stream raw data |

PSH格式:

| pack_start_code(32)  | "01"(2) |

pack_start_code: 32bit,定义ps流的开始,值为0x000001BA

"01": 2bit,固定为01

system_clock_refference

system header PS流的系统头:

| system_header_start_code(32) | header_length(16) |

system_header_start_code: 32bit 0x000001BB

header_length: 16bit,系统头长度

PES包详细格式:

| packet_start_code_prefix(24) | stream_id(8) | PES_packet_length(16) |  other_info_and_data |

packet_start_code_prefix:24bit ,包起始标记,值固定为0x000001;

stream_id: 8bit

PES_packet_length: 16bit,PES包的长度

other_info_and_data:的值跟stream_id的值相关

PS封装H264:

典型的H264 I帧PS包 :     | PSH | SystemHeader | PSM | PES of SPS | PES of PPS | PES of SEI | PES0 of I frameData | PES1 of I frameData | ...... | PESn of I frameData |

典型的H264 P/B帧PS包 :| PSH | PES0 of P/B frameData | PES1 of P/B frameData | ...... | PESn of P/B frameData |

视频流PS,PS封装H264的更多相关文章

  1. 关于对H264码流的PS的封装的相关代码实现

    1.写在开始之前: 最近因为新工作要维护别人留下的GB模块代码,先熟悉了流程,然后也试着封装了下ps流,结果也能通过测试正常预览了,当然,其中开发读文档的头疼,预览花屏,卡帧的事情都有遇到,当时慢慢的 ...

  2. ps流提取H264并解码播放

    因为需要从海康ps流中提取H264数据并进行解码播放,才有了这篇文章.因为是视频编解码领域的纯入门新手,个别理解或者方法有误,需要自行判断,不过相关方法已经测试通过,对于 像我这样的新手还是有一定的借 ...

  3. 流媒体ts/ps流封装/分析

    1.TS 1) 感谢星辰同学,还热乎着,

  4. RTP封装h264

    网络抽象层单元类型 (NALU): NALU头由一个字节组成,它的语法如下: +---------------+      |0|1|2|3|4|5|6|7|      +-+-+-+-+-+-+-+ ...

  5. 使用ffmpeg获取视频流后如何封装存储成mp4文件

    int main(int argc,char *argv[]) 02 { 03  AVFormatContext *pFormatCtx; 04  int i,videoStream; 05  AVC ...

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

    转自:http://blog.csdn.net/chen495810242/article/details/39207305 写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个 ...

  7. (转)RTP协议全解(H264码流和PS流)

    写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析, 其中借鉴了很多文章,我都列在了文章最后,在此表示感谢. 互联网的发展离不开大家的无私奉献,我决定从我做起,希 ...

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

    写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个比较全面的解析, 其中借鉴了很多文章,我都列在了文章最后,在此表示感谢. 互联网的发展离不开大家的无私奉献,我决定从我做起,希 ...

  9. EasyDarwin云平台:EasyCamera开源摄像机接入海康威视摄像机PS流转ES流

    本文转自EasyDarwin开源团队成员Alex的博客:http://blog.csdn.net/cai6811376 海康威视使用PS流封装H.264流,EasyDarwin云平台支持ES流.当我们 ...

随机推荐

  1. Archlinux配置~小米笔记本Air 13.3英寸版本

    1 .zsh echo $ SHELL \\查看当前正在使用shell: pacman -S zsh zsh-syntax-highlighting git wget wget https://raw ...

  2. Charles抓包遇到的问题

    1.手机设置了代理但是连不上网,无法下载HTTPS证书,关闭电脑防火墙! 2.content乱码解决方案参考https://www.cnblogs.com/puresoul/p/7365761.htm ...

  3. 深入浅出JMS 消息队列

    移驾于亮老师博客 http://blog.csdn.net/jiuqiyuliang/article/details/46701559

  4. 分享一个好用的tmux配置文件

    tmux众所周知,不过多介绍,友好的tmux配置,让人用起来很舒服,分享一个tmux配置文件 # ------ general ------------------------------------ ...

  5. Spark的mlib中的稠密向量和稀疏向量

    spark mlib中2种局部向量:denseVector(稠密向量)和sparseVector(稀疏向量) denseVector向量的生成方法:Vector.dense() sparseVecto ...

  6. 【EMV L2】Cardholder Verification Rule(CVR) Format

    Cardholder Verification Rule(CVR)由两个字节组成: 高字节为Cardholder Verification Method (CVM) Codes,表示执行Cardhol ...

  7. RxJS核心概念之Subjet在angular2+上的应用

    Subject,在RxJS中是一类特殊的Observable(可观察对象),它可像多个Observer(观察者)推送值.每一个Subject也可以作为Observer(观察者) Subject同样也是 ...

  8. excel 格式化姓名

                在做excel时,难免会遇到输入姓名对齐这种情况,如果数据少时我们可以手动敲空格来进行对齐,但数据量大时,手动调整就不是好办法了.     此时我们可以通过excel自带公式对 ...

  9. 对lua中__newindex的理解

    阅读了文章后用流程图来总结一下 __newindex的规则: a.如果__newindex是一个函数,则在给table不存在的字段赋值时,会调用这个函数.b.如果__newindex是一个table, ...

  10. day08文件操作

    今日内容 文件操作 内容详细 1.打开文件 1.open("作业讲解.py",mode="r",encoding="utf-8") 2.文件 ...