MPEG-PS包结构

    技术2023-10-31  112

    1、PS与TS联系

    ps全名MPEG2-PS,ts全名MPEG-TS,两者由MPEG-2规定,MPEG-2当中定义了两种复合信息流:传送流(TS:TransportStream)和节目流(PS:ProgramStream),TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的

    PS包与TS包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力,因而应用的环境也有所不同。TS码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时,接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步,避免了信息丢失。而PS包由于长度是变化的,一旦某一PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。因此,在信道环境较为恶劣,传输误码较高时,一般采用TS码流;而在信道环境较好,传输误码较低时,一般采用PS码流。 由于TS码流具有较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS码流的包格式。

    MPEG2-PS主要应用于存储的具有固定时长的节目,如DVD电影,而MPEG-TS则主要应用于实时传送的节目,比如实时广播的电视节目。这两种格式的主要区别是什么呢?你将DVD上的VOB文件的前面一截剪掉(或者干脆就是数据损坏),那么就会导致整个文件无法解码,而电视节目是你任何时候打开电视机都能解码(收看)的,所以,MPEG2-TS格式的特点就是要求从视频流的任一片段开始都是可以独立解码的。   

    2、基本概念

    (1)ES是直接从编码器出来的数据流,可以是编码过的视频数据流,音频数据流,或其他编码数据流的统称。ES流经过PES封装之后,被转换成PES包;

    (2)PES是打包了的专用视频、音频和数据、同步信息等,PES包由包头和payload组成;

    (3)PES是PS转换为TS或PS转换为TS的中间步骤或桥梁,是MPEG数据流互换的逻辑结构,不允许直接传输PES;

    (4)AU是构成ES流的存取单元。1个AU相当于编码的1幅视频图像或1个音频帧,也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样

    3、PS包结构

    一个PS文件结构如下:

    上图中pack指的是PS包,PS包开头码为 0x000 001BA,PS包没有结束码,整个文件的结束码为 0x0000 01B9

    包含关键帧数据的 PS包 整体结构如下:

    注意: (1)System_Header 仅仅当 PS 包含关键帧数据时才有,对于包含的是非关键帧数据的 PS 包,没有System_Header; (2)其中PS header是14-21,标准的头为14 bytes,扩展字节多少是由PS header中的stuffing length来决定的(图不是本人画的,这里只是个人的理解)

    将h264等压缩后的视频数据打包成PS过程:

     注意图中举例的是有关键帧的PS包,所以有System_Header,而且上边说的是没有音频,只有视频的情况,若有音频需要在视频的PES包后加上音频的PES包

    下面开始介绍PS_Header、PS System_Header、PES header

    3.1、PS_Header

    PS_Header结构图:

    注意 packets 起始码:0x000 001BA,其它各个字段含义可以看:https://blog.csdn.net/jctian000/article/details/80308977

    3.2、System_Header

    System_Header结构图:

    System_Header起始码为:0x0000 01BB,字段含义参考:https://blog.csdn.net/jctian000/article/details/80308977

    3.3、PES_Header

    PES_Header结构图:

    起始码:0x0000 01 BC,字段含义:https://blog.csdn.net/jctian000/article/details/80308977

    具体每个字段含义:https://blog.csdn.net/zhangrui_fslib_org/article/details/52327420

    主要参考资料:https://download.csdn.net/download/zhangbo/3954818https://download.csdn.net/download/cch809094a/5148599

    附上一篇分析的文章:https://www.cnblogs.com/zhumengke/articles/11238778.html

    针对GB28181对PS的分析:https://blog.csdn.net/ichenwin/article/details/100086930?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159460309319724811862165%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=159460309319724811862165&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v2-1-100086930.first_rank_ecpm_v3_pc_rank_v2&utm_term=PS%E6%A0%BC%E5%BC%8Fhttps://www.xilixili.net/2018/05/11/parse-hikvision-camera-ps-stream/

    Processed: 0.011, SQL: 9