MPEG2-PS 1.PS介绍MPEG2-PS 是一种多路复用数字音频、视频等的封装容器。PS 是 Program Stream(程序流或节目流) 的简称。程序流将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流。它是为可靠稳定的储存媒介如光盘而设计的。TS 流与 PS流的区别在于TS 流的包结构是固定长度的,而PS 流的包结构是可变长度的。它是分包发送的,每一个包长为188 字节。在 TS 流里可以填入很多类型的数据,如视频、音频、自定义信息等。他的包的结构为,包头为4 个字节,负载为184 个字节。PS 包与 TS 包在结构上的这种差异,导致了它们对传输误码具有不同的抵抗能力,因而应用的环境也有所不同。TS 码流由于采用了固定长度的包结构,当传输误码破坏了某一TS包的同步信息时, 接收机可在固定的位置检测它后面包中的同步信息,从而恢复同步, 避免了信息丢失。而PS包由于长度是变化的,一旦某一PS包的同步信息丢失,接收机无法确定下一包的同步位置,就会造成失步,导致严重的信息丢失。因此,在信道环境较为恶劣,传输误码较高时,一般采用TS 码流;而在信道环境较好,传输误码较低时,一般采用PS码流。辨别这两种格式最简便的方法是利用MediaInfo 工具查看 MPEG 视频的编码信息, 这样就能确定它是何种格式,以方便后续的无损剪辑。一般来说,采用MPEG2-HD 格式的高清数码摄像机一般以“MPEG2-PS”来保存文件;而采用AVCHD 格式的高清摄像机则通常以“ .M2TS”或“ .MTS”保存文件。2. PS封装 H264 的流程PS 封装按照 ISO DEC-13818-1 标准。一个PS 包包含 PS Header, PES Header, PS system header, PS system map等。针对 H264 做如下 PS封装:每个IDR NALU前一般都会包含SPS、PPS 等 NALU ,因此将 SPS、PPS、IDR 的 NALU 封装为一个PS 包,包括 ps 头,然后加上PS system header,PS system map,PES header+h264 raw data。所以一个IDR NALU PS包由外到内顺序是:PS header | PS system header | PS system Map | PES header | h264 raw data。对于其它非关键帧的PS 包,就简单多了, 直接加上 PS 头和 PES 头就可以了。 顺序为:PS header | PES header | h264 raw data。以上是对只有视频video 的情况, 如果要把音频Audio 也打包进 PS 封装, 也可以。当有音频数据时,将数据加上PES header 放到视频 PES 后就可...