网站大量收购独家精品文档,联系QQ:2885784924

MPEG帧的概念.doc

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MPEG帧的概念

MPEG帧的概念和H.264的补充 MPEG定义 根据MPEG的定义,帧分为I帧,B帧,P帧。这些帧定义如下: I帧:就是关键帧,I帧压缩采用基准帧模式,只提供帧内压缩,即把帧图像压缩到I帧时,仅仅考虑了帧内的图像。I帧压缩不能除去帧间冗余度。帧内压缩基于离散余弦变换(DCT),类似于JPEG和H.261图像中使用DCT的压缩标准。I帧压缩可以得到6;1的压缩比而不产生任何可觉察的模糊现象。 B帧:为双向帧间编码。它从前面和后面的I帧或P帧中提取数据。B帧基于当前帧与前一帧和后一帧图像之间的差别进行压缩。B帧压缩可以达到200:1的压缩比,其文件尺寸一般为I帧压缩尺寸的15%,不到P帧压缩尺寸的一半。 P帧:采用了前向预测,意思是P帧是根据前面的P帧或I帧预测得来的。P帧采用预测编码,利用相邻帧的一般统计信息进行预测。也就是说,它考虑运动特性,提供帧间编码。P帧预测当前帧与前面最近的I帧或P帧的差别。 H.264补充 H.264中也有I B P帧,不同的是,H.264是以多幅图像为参考,因此可以获取更高的压缩比,以及更连贯的动作。但是这也造成H.264耗资源大,延时也略大于MPEG-4。 除了I B P帧外,H.264提出了SP和SI帧,这两种帧介于I和P之间。SP的编码原理和P类似,仍是基于帧间预测的运动补偿预测编码,两者之间的差异在于SP帧能够参照不同参考帧重构出相同的图像帧。充分利用这一特性,SP帧可以取代I帧,广泛应用于Bitstream Switching, Splicing, Random Access, Fast Forward Fast Backward以及Error Recovery等应用中。同时大大降低了码率的开销。SI则是基于帧内预测的编码技术,其重构图像的方法和SP完全相同。 SP帧的编码效率尽管略低于P,却远远高于I,大大改善了H.264的网络亲和性,支持灵活的流媒体服务应用,具有很强的抗误码性能,适于在噪声干扰大、丢包率高的无线信道中传输。 T264中帧的概念 T264中主要包括了IDR,I,P,B四种。 IDR:类似于H.264标准的I帧,在马赛克问题中起着至关重要的作用。在IDR之后的图像不会再以IDR之前的图像为参考,间断性的插入IDR,可以把视频分成段。 I:类似于H.264标准的SP帧,进行了帧间的预测。T264对I的取名让我们走了不少弯路。我们一直把I作为关键帧来处理,但是发现在网络丢包的情况下只播放I帧,也会有马赛克现象出现。而且前面的包丢的越多,I帧的马赛克现象越严重,这就表明I帧也和前面的帧作了帧内预测。对IDR帧的实验和研究才让我们走出误区,IDR才是真正的标准中的I帧。 P和B:这两个和标准中一致,和多幅图像做了帧间的预测。 对T264码流的改造 目前T264支持的码流主要有如下几种: 0) IDR P P P .....P I P P P P ... P I P P ... 1) IDR B P B P.....B P B P I B P B P ... 2) IDR B B P B B P.....B B P I B B P 在数据的刚开始总会有一个IDR帧出现,之后就不再有IDR。这样可以让数据量很小,但是解码端必须要收到第一个IDR帧,否则整个数据都将不能正确解码,这就导致我们实验时必须先启动解压端,然后再启动压缩端,以保证第一个IDR顺利到达。 后两种带有B的码流在目前的T264的源码中已经不再使用。B帧的加入虽然可以让数据量变小,但是也会造成CPU消耗过多,在丢包的情况下数据难以恢复的现象。我想T264只所以不采用后面两种码流,大概就是考虑这些问题。 目前T264采用的码流为第一种,对于本地文件压缩,这种码流非常适合,但是对于网络传输来说,这种码流有着重大的问题。因为网络传输时第一个IDR帧很可能不能被解压缩端所获取,这样就造成严重的误码和程序错误。对于这个问题,我的解决方案是定期投放IDR帧。由于过多的IDR会带来数据量变大,为此我们又要采取另外一种措施,就是尽可能放弃I帧,以此来减少由于IDR数量增加造成的数据量增大的问题。因此我们的码流如下所示: IDR P P P .....P IDR P P P P ... P IDR P P ... 马赛克问题的探讨 在确定好我们的码流后,我将对马赛克问题做详细的分析。目前我们采用了每10帧一个IDR的方式,为了更好的说明问题作出了如下图表: 码流 IDR P P P P P P P P P IDR P P P P P 帧号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 上表中1和11号帧为IDR帧,其余位P帧。假设第7帧丢失,如下图所示: 码流 IDR P P P P P ? P P

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档