找回密码
 注册

新浪微博登陆

只需一步, 快速开始

QQ登录

只需一步,快速开始

快捷导航
事务所专题-柯南20周年纪念事件簿
搜索
查看: 585|回复: 4

[求助]在播放某些AVI的时候有点问题

[复制链接]

杯户中学生

发表于 2004-6-6 03:03:58 | 显示全部楼层 |阅读模式
总是有这样的一个信息= =+

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册 新浪微博登陆

×

杯户小学生

发表于 2004-6-6 10:13:16 | 显示全部楼层

回复:

如果你是正常的FTP下载的话可能是解码器的问题,装个新的FFDSHOW

如果你这个文件是BT下载的,不排除是文件没完全下载完,文件出错的可能性
回复 喝彩 无视

使用道具 举报

最后的银色子弹

发表于 2004-6-6 22:26:42 | 显示全部楼层

回复:

很正常~~记得是早期的压制码的关系~~~往往都是视频开始的第1贞~~不影响播放~~
回复 喝彩 无视

使用道具 举报

杯户中学生

 楼主| 发表于 2004-6-6 23:41:35 | 显示全部楼层

回复:

怎样压制才能避免这个情况= =
回复 喝彩 无视

使用道具 举报

杯户小学生

发表于 2004-6-7 01:51:49 | 显示全部楼层

回复:

packed bitstream 是 DivX 设计的,因为他们发现在 AVI 里面放 B-frame,会造成严重的影音不同步的问题,为了要解决这个问题,所以他们设计了 packed bitstream。

AVI当初设计的时候并没有考虑会有 B-frame ,它的sequence order是循序的,也就是
1 2 3 4 5 6 7 8
I B P B P B P B ....

然而播放的时候,读入 2B 并不能立刻解码播放,要等下一个 3P 被读进来解码完毕以后,才能解码 2B,因为 B-Frame是双向参考的,2B需要参考它后面的 3P,在 3P 还没有解码完之前,我们也就无法解码 2B。

因此就会造成一个解码的 lag,解码的延迟,所以解码会变成这样

代码:------------------------------------------------------------------------
1 2 3 4 5 6 7 8
I B P B P B P B ....  <-- 输入
I B P B P B P B ....  <-- 输出
-----------------------------------------------------------------------------

往后 delay 一个 frame,在 3 的时间点,读入 3P,于是便可以输出 2B。
所以用 VFW Codec(xvidvfw.dll) 去解码这种 AVI,第一个画面会显示英文「警告,无法输出画面,因为 B-frame解码延迟」。

用 DirectShow Filter(xvid.ax) 播放时,XviD 的 DShow 有设计过,不会输出这个画面,所以我们看不到,而 VFW Codec 因为 VFW 限制的关系,一定会输出这个画面。但是不管有没有这个画面,都会延迟一个 frame,所以会造成影音不同步,由于只有差距一个 B-frame,所以不注意听的话可能不会察觉,但是仔细听的话就会发现。


DivX 的设计者为了解决这个问题,提出了packed bitstream,把 B-frame 和它要参考的 P-frame 包在一起,变成下面这个样子

--------------------------------------------------------------------------------
1  3 2       5 4       7 6
I [P|B] [n] [P|B] [n] [P|B] ....
--------------------------------------------------------------------------------

[n] 是 null,空的 frame。

解码器遇到 packed bitstream,就知道 P 跟 B 是包在一起的,中间有一个特殊设计的 | 会区分开来,B-frame 可以实时解出来,而后面的 [n] 则显示先前解出来的 P-frame。

这样就破解了 AVI 之中无法处理 B-frame 的限制。

也许有人会想,就算不用 packed bitstream,我把声音也跟着往后 delay,不就可以解决了吗。确实,这样就不会有影音不同步的问题,但是还是有许多兼容性的问题,在不同 player 上,会发生各种奇怪的现象,例如画面显示的顺序错乱等等。
而且 XviD 的 B-frame 不只一个,它可以
I B B P B B ....

甚至还可以
I B P B B P B P P B B B ....

lag 更乱。

所以,出现这个画面的原因就是压制者在使用B-Frame的情况下没有开启packed bitstream,导致解码延时。

有兴趣的人可以看看Doom9的这个帖子
回复 喝彩 无视

使用道具 举报

您需要登录后才可以回帖 登录 | 注册 新浪微博登陆

本版积分规则

Archiver|手机版|小黑屋|名侦探柯南事务所 ( 沪ICP备05038770号 )

GMT+8, 2025-2-2 16:35 , Processed in 0.055097 second(s), 17 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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