开元周游
德国频道
查看: 2037|回复: 1
打印 上一主题 下一主题

[分享]『 什么是B帧、I帧和P帧 』

[复制链接]
1#
发表于 14.1.2003 23:53:22 | 只看该作者
B 帧在 MPEG-4 中有四种参考模式,如果是同时参考前后的画面压缩,<br>则记录的是 和 (前画面 pixel 值 + 后画面 pixel 值)/2 的差值,<br>也就是 和 「前后画面的平均」的差值。<br>所以记录的差值个数和 P 帧一样,只有一个,没有增加。<br><br>而因为 B 帧位于前后画面的中间,以「前后画面的平均」,也就是「前后画面的中间值」<br>来作为预测数值(预测 B 帧的 pixel 数值为多少?如果有误差,再记录差值),<br>这样这个预测数值会比单独使用前一个画面来预测,更接近目前真正的 B 帧的数值,<br>可想而知,如此所需要记录的差值就会很小甚至可以根本不用记录,<br>所以便可以省下很多的 bits,提高压缩率。<br><br>例如<br><br>亮度变化 -&gt;<br>I B P<br>7 8 9<br><br>如果 B 只参考前一个画面压缩,则需记录差值 1。<br>如果以 (I + P)/2 压缩,则差值为 0,不需记录差值。<br>(虽然要记录两个矢量,不过矢量也可以再做进一步预测压缩,总的来说,<br>还是会比单独参考前一个画面压缩来得小很多)<br><br>如果画面不是这样变化怎么办?通常来讲画面都会是这样变化,<br>如果不是这样变化我们就不使用 B 帧 <br>就算变化不是如此规则,换个方式想,B 帧可以参考的画面还是比 P 帧多,<br>再怎么找,也还是 B 帧可以找到误差更小的方块来使用的机率大<br>(因为可以选择、参考的对象较多),所以 B 帧还是比 P 帧的压缩率来得高。<br>(而且高很多,差距非常大)<br><br>除了压缩率以外,B 帧对画质的影响.....<br>是有的,因为 B 帧这种参考前后画面的特性,等于有内插(interpolation)的效果,所以可以减少噪讯。<br><br><br>MPEG-4 中的 B 帧,也是非常具有威力的,除了以前的三种参考模式,<br>还有 Direct Mode,连矢量的纪录都省了。<br>虽然 MPEG-4 之中有 4MV 的功能,可以记录四个矢量,不过编码器在压缩的时候会判断,<br>到底是使用 4MV 压出来的结果小,还是使用传统的方法压出来的结果小?<br>如果使用传统的方法压出来的结果小,便使用传统的方法记录,<br>如果使用 4MV 压出来的结果小,才使用 4MV 来记录。<br>(ps. 4MV 不会用在 backward 预测)<br><br>您可以观察 VirtualDub 压缩时画面上显示的蓝线,您会发现蓝线和蓝线之间通常会有很短的<br>蓝线插在中间,造成空隙,而且差距很大,这个就是夹在 P 之间的 B 在发挥压缩威力 <br>如果是用 DivX 5 更明显,因为 DivX 5 只能够使用 IBPBPBPB... 这种一个 B 接一个 P 的形式,<br>所以画面上的蓝线就是「一长一短、一长一短」这样排列。<br><br>
2#
发表于 15.1.2003 00:01:33 | 只看该作者
又长知识了。 <!--emo&--><img src='http://bbs.kaiyuan.info/html/emoticons/smile.gif' border='0' valign='absmiddle' alt='smile.gif'><!--endemo-->  
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点信息

站点统计| 举报| Archiver| 手机版| 小黑屋

Powered by Discuz! X3.2 © 2001-2014 Comsenz Inc.

GMT+1, 16.11.2024 16:50

关于我们|Apps

() 开元网

快速回复 返回顶部 返回列表