雷霆手游网:一个值得信赖的游戏下载网站!

雷霆手游网 > 资讯攻略 > 揭秘PMP:深入解析这一独特文件格式

揭秘PMP:深入解析这一独特文件格式

作者:佚名 来源:未知 时间:2025-04-25

PMP是一种视频音频封装格式,由jonny设计,和AVI一样,它只是一种封装的容器格式。PMP格式主要有两个版本,PMP1.0和PMP2.0。

揭秘PMP:深入解析这一独特文件格式 1

PMP1.0版本相对简陋,它只支持封装MP4V流(xvid、divx)和MP3流,且MP3流要求为CBR(恒定比特率),采样率为44100Hz。PMP1.0版本的文件结构从文件头开始,顺序如下:

揭秘PMP:深入解析这一独特文件格式 2

文件头标识:前4个字节一定是“pmpm”,这是PMP文件的标志。

版本号:接下来的4个字节表示版本号,PMP1.0版本中此处为0。

视频帧总数:之后的4个字节表示视频帧的总数。

视频宽度:紧接着的4个字节表示视频的宽度。

视频高度:随后是4个字节的视频高度信息。

视频scale:表示视频scale的4个字节。

视频rate:表示视频rate的4个字节,视频的帧率fps可以通过rate除以scale计算得出。

最大视频帧大小:4个字节表示最大视频帧的大小。

视频帧索引:视频帧总数乘以4个字节,用于存储每帧视频的索引。每个索引4个字节,其中最低一个bit位表示该帧是否为关键帧,其余的31位bit表示帧的大小。

视频数据:根据前面的索引计算得出的视频数据字节数。

音频帧数据大小:4个字节表示音频帧的数据大小,由于采用的是CBR模式,所有的音频帧数据大小相同。但关键帧的大小比普通帧大小多一个字节。

音频帧总数:4个字节表示音频帧的总数。

音频帧索引:音频帧总数乘以1个字节,用于存储每帧音频的索引。每个索引1个字节,关键帧为1,普通帧为0。每帧的实际大小等于音频帧的数据大小加上索引值。

音频数据:根据前面的索引计算得出的音频数据字节数。

PMP1.0格式存在明显不足。首先,它没有视频和音频的标志位,固定死了视频和音频的编码格式,无法封装各式的流。其次,由于视频和音频数据是非交错存储的,播放程序在回放时需要频繁移动文件指针,这降低了播放效率

针对PMP1.0的不足,PMP2.0版本重新设计了文件格式结构,提供了更多的灵活性和支持。PMP2.0的文件结构从文件头开始,顺序如下:

文件头标识:前4个字节同样是“pmpm”,表明这是一个PMP文件。

版本号:接下来的4个字节表示版本号,PMP2.0版本中此处为1。

视频格式标志:4个字节的视频格式标志位,为支持封装各种视频流提供了保证。0表示MP4V流(xvid、divx),1表示AVC流(PMP-AVC其实就是PMP2.0格式封装了AVC流)。

视频帧总数:之后的4个字节表示视频帧的总数。

视频宽度:紧接着的4个字节表示视频的宽度。

视频高度:随后是4个字节的视频高度信息。

视频scale:4个字节表示视频scale。

视频rate:4个字节表示视频rate,视频的帧率fps同样可以通过rate除以scale计算得出。

音频格式标志:4个字节的音频格式标志位,同样为支持封装各种音频提供了保证。PMP2.0目前只支持mp3流,该值为0。

包含的音频流数量:4个字节表示包含的音频流数量,为支持多音轨封装提供了保证。如果一个PMP文件中封装了两条音轨,该值就为2。

每帧视频附带的音频帧的最大数:4个字节表示每帧视频附带的音频帧的最大数。PMP2.0采用了视频音频交错存储的方式,一帧视频和相应的几帧音频放在一起,这是一个最大值。

音频scale:4个字节,默认为1152。

音频rate:4个字节,默认为44100Hz。

音频是否立体声:4个字节,0表示单声道,1表示立体声。

视频帧索引:视频帧总数乘以4个字节,用于存储每帧视频的索引。每个索引4个字节,其中最低一个bit位表示该帧是否为关键帧,其余的31位bit表示帧的大小。不过这里的帧大小和PMP1.0格式的帧大小计算方法不同。

视频音频混合数据:在PMP2.0中,视频帧和相应的音频帧被混合在一起存储,这提高了数据读取的效率。每个混合数据帧前面还会加上一些额外的字节用于描述该数据帧的信息,包括每音轨被混合的帧数、被混合的第一个音频帧和视频帧之间的时间差、被混合的最后一个音频帧和视频帧之间的时间差、视频帧的大小以及每个被混合的音频帧的大小等。

PMP2.0格式的设计解决了PMP1.0版本中的许多问题,提供了更广泛的视频和音频流支持,并采用了视频音频交错存储的方式,提高了播放效率。

PMP文件的播放需要特定的播放器支持。由于PMP1.0和PMP2.0格式的差异,以及PMP2.0中不同视频流和音频流的支持,需要不同的播放器来播放这些文件。例如,PMP-MOD1、PMP-MOD2和PMP-AVC等播放器分别用于播放不同版本的PMP文件以及封装了不同视频流和音频流的PMP2.0文件。

对于PMP1.0格式的文件,由于其固有的限制和不足,建议将原有的PMP1.0格式文件转换为PMP2.0格式以享受更好的播放效果。PMP-MP4V和PMP-AVC文件虽然封装了不同的视频流,但它们的封装格式是相同的,只是内部的流不同而已,因此可以通过支持不同解码器的播放器来播放这些文件。

总的来说,PMP作为一种视频音频封装格式,虽然有其特定的历史背景和版本差异,但在PMP2.0版本的推出后,它提供了更广泛的视频和音频流支持以及更高的播放效率。随着技术的不断发展,PMP格式可能会继续演变和完善,为用户提供更好的使用体验。