分类: 网络与安全
2013-07-19 17:54:08
1、 打开一个PS封装的媒体文件,可以看到有很多以0x000001BA开头的字段,该字段为program pack的开始标志,每一个PS封包都包含一个该字段,同时一个PS封装的媒体文件中还有一个0x000001B9字段,该字段为媒体文件的结束标志,事实证明该字段可以没有,具体有什么影响还不清楚。
2、 一个program pack有一下部分组成:pack_header, system_header, system_map_header, PES_packets;其中system_header,system_map_header当且仅当第一帧数据为I帧时才存在,当数据帧为P帧时,一个program pack只有pack_header和PES_packets。同时如果一帧数据太大时,可以有多个pes_packets。
3、 MPEG4码流关键帧头部有16个字节,非关键帧头部有8个字节(均包含4个字节的ID),由于在GetAvDate获取的mpeg4源码流中没有找到该头部,所以在每次获取一帧码流时都给添加了该头部信息,事实证明该头部信息不是必须的。同时GetAvDate获取的mpeg4源码流也没有 视频对象序列VOS,视频对象VO,视频对象层VOL,视频对象平面组GOV信息,代码中是通过添加的方式实现 。
4、 Mpeg4加头部mepg4_head和vol后封装成的PS文件可以通过QQ影音和VLC播放,但是不可以通过暴风影音播放,事实证明Mpeg4在封装成ps文件时vol信息时必须的。而h.264则可以通过任何播放器播放。同时在获取mpeg4源数据时通过打印出现以下问题:每秒获取的数据不为30帧,但是I帧与I帧之间还是包含30帧,会不会是这点导致播放mpeg4源码时出现画面花屏的情况,但为什么经过ps封装之后播放就正常了?