以下情况下用 ffdshow 代替 XviD 编码可能出现问题:
1. XviD 编码时对 b 帧使用了 packed bitstream
2. XviD 使用了自制 Matrix, 其中 Inter-Matrix 最左上角的值不是16.
3. XviD 使用了 Qpel, 或其他一些高级选项.
4. 若 XviD 单独使用 Qpel, ffdshow 应该可以播放(但由于其 interpolation 方法跟 XviD 不一样, 所以会出现问题), 但若编码时 XviD 使用了 Qpel+ b frame, 或其他一些组合, 则 ffdshow 根本无法解码, 会直接导致播放器出错退出.
ffdshow 作者 milan 很久没有升级了, 所以用老的 ffdshow 播放新的 XviD 编码的视频会出现这样那样的问题.
但是令人高兴的是这几天 XviD 的 mailing list 上出现了 milan 的身影, 相信不久各位可以使用到新的, 兼容 XviD 1.0 的 ffdshow :)
解决方法就是直接用 XviD 自己的解码器来解码, 方法 yvonn 兄已经指出. :)
补充一点点, 您可能必须要直接 disable, 即使选则
format Decoder
XviD XviD
也不行(比如解码 qpel + bframe, 必须 disable :D)
edit:
才发现 athos 前天在
doom9 发布了 ffdshow-20040304, 关于 XviD 的部分 changelog:
引用
2004-03-04 17:56 milan_cutka
support for quantizer array exported by xvid
2004-03-03 15:11 milan_cutka
removed xvid's "b frame decoding lag" message, custom quant tables
selection moved to quantization type combobox
但我简单测试了一个 avi, 其使用了 custom matrix, bframe 和 bitstream
回放时还是出现方块(libavcodec)
ps. 加入了对 vp6 的解码支持.
感兴趣的可以从 doom9 那贴提供的链接下载.
但最好的解码方式还是只使用 XviD 来解码 XviD, 同理用 DivX 来解码 DivX, vp6 来解码 vp6