liaojingdb 发表于 2011-4-18 16:32:38

Xvid压制带B帧视频复杂画面丢帧怎么解决?

本帖最后由 liaojingdb 于 2011-4-19 02:47 编辑

Xvid压制带B帧视频复杂画面丢帧怎么解决?

.   坛主,继上次解决问题后又来求教了!
.   这次是Xvid压制带B帧视频的问题。经自己实际截图查看Xvid设置4的B帧可以显著改善画面细节,可以给移动设备在低码率的情况下保持很好的画面效果。
.   随之而来的问题是较为复杂的动态画面时候就出现播放跳帧的感觉,画面不流畅了。普通静态、动作不大的画面倒是没有什么问题。
.   用播放器用1帧1帧的方式播放原视频、不带B帧视频、带B帧视频对比发现,带B帧的视频播放时候确实少帧了,几秒下来带B帧的视频少了近10多帧!
.   网上搜了搜也没查到啥结果,偶尔看到个“xvid中解码时,总是无法解完所有的帧,怎么回事? (http://bbs.lmtw.com/dispbbs.asp?boardid=20&id=107915)”,不知道是缓冲问题不,乱设置了设置也没啥效果。
.   使用的压制工具是MediaCoder2011-R3-5135、Megui,2个工具尝试不同B帧数值后表现都是一样的丢帧。
.   求解如何压制B帧Xvid视频而且画面流畅不丢帧!

IsaacZ 发表于 2011-4-18 17:26:24

请提供所有测试工具、素材和参数设置。感兴趣的朋友会帮你测试。

liaojingdb 发表于 2011-4-18 18:06:44

本帖最后由 liaojingdb 于 2011-4-18 18:37 编辑

.   视频我使用的是“(538976F5).mkv(http://bt.ktxp.com/html/2011/0111/184682.html)”【大小:297,685,623字节】

.   就拿片头测试吧,44秒到2分14秒。刚开始的3次花丛左右移开;59秒到1分10秒的背景卷动。这些使用B帧后明显感到一卡一顿的丢帧,其他地方也多少有些。同样的设置B帧改为0就完全好了。
.   工具我用的是MediaCoder2011-R3-5135、Megui,因为可以设置B帧参数(1-4随意了)。
.   下面我就贴下我MediaCoder的视频设置图吧:

IsaacZ 发表于 2011-4-18 20:12:51

你知道怎么设置会好,还问什么呢?

liaojingdb 发表于 2011-4-18 21:17:59

本帖最后由 liaojingdb 于 2011-4-18 21:27 编辑

.   一开B帧就会出现跳帧问题,见过很多人发布的老Xvid影片也都是含有B帧的,但是完全没有卡顿跳帧一说。而这个在低码率以及画质的提升方面很明显,所以想弄明白如何压制带B帧的流畅Xvid视频。

.   下面我贴个512kbps码率情况下开B帧和不开B帧的截图对比:
https://deadlink.dianbo.org/u.115.com/file/t58b8c763a
.   开了B帧后细节轮廓明显更多了实际放小看就是感觉非常清晰的感觉,而且开了B帧后文件容量也会变小,非常适合于移动设备存放。

IsaacZ 发表于 2011-4-18 22:26:35

请提供楼上提到的“很多人发布的老Xvid影片”。

liaojingdb 发表于 2011-4-19 00:06:19

本帖最后由 liaojingdb 于 2011-4-19 16:15 编辑

.   刚才网上搜了下,发现魅族M8论坛很多人也在讨论Xvid的B帧视频播放问题。貌似硬解播放方式就会出现我说的卡顿跳帧的情况,使用另外一个版本的播放器软解码则完美播放。
.   这么一想,我台式电脑3G+的双核怎么软件都能够流畅播放啊,在一想我播放器解码设置会不会有啥问题,试着去看看播放器解码方式:

.   默认的设置是“使用内部解码器(推荐)”,我尝试着更改成“使用系统默认的解码器”后发现之前自己压的含有B帧视频居然一点都不卡顿跳帧了!



.   上图是改成“使用系统默认的解码器”后变成ffdshow进行软解码的信息,帧率信息都正确的检测了出来。



.   上图是“使用内部解码器(推荐)”播放时候的信息截图,无法正确的识别视频格式信息,所以造成视频播放一卡一顿跳帧等问题吧。

.   随后一想我的播放器是“幻想影音”接管的,就去看了看设置,把“开启内置视频解码器”、“开启内部解码器DXVA(dxva应该是硬解码)”都关掉了后使用播放器播放也就变成ffdshow流畅播放了。



.   以上,基本可以认为是解码器造成没有正确识别视频信息造成的卡顿跳帧吧。不过我电脑不少老的动画片,都含有1-2的B帧设置Xvid视频,还是用默认设置“使用内部解码器(推荐)”进行解码,并不会出现卡顿跳帧的问题。刚才看了下信息是默认的视频编码器“VideoCodecTransform”,但是“输入”、“帧率”均识别正确,不知道这些压制组是怎么压制的:


视频
ID                               : 0
文件格式                           : MPEG-4 Visual
格式简介                           : Simple@L3
格式设置, BVOP                     : 2
格式设置, QPel                     : 否
格式设置, GMC                        : No warppoints
格式设置, Matrix                     : Default (H.263)
编码设置ID                           : XVID
编码设置ID/提示信息                      : XviD
.    看了下格式规格是“Simple@L3”,但是SL3这个级别是不能使用B帧这个功能的啊,可是“BVOP:2”这个数据就是“B帧”啊。
.    百度:BVOP: Inter Bidirectional Prediction VOP,可译为“帧间双向非因果预测VOP”,其实就是B Frame (B帧)。

.    我掌上设备用的播放器可能同PC类似吧,不能正确的识别文件信息造成的画面卡顿。之前我搜到过2011年最新移植的播放器,确实可以做到流畅的播放视频,完全没有卡顿现象,无奈移植有问题吧,无法正确识别音频......看来只能使用老播放器看B帧的Xvid视频了,反正动画片打斗场景不多。
.    无奈啊,移植的播放器虽然公布着源代码下载,但是无奈Liux封包改移植完全不会......

.    看到别的压制组的Xvid视频使用“使用系统默认的解码器”均能流畅播放正常识别,发现人家是AVI格式,突然就想到是不是自己封包有问题,因为AAC音频大幅超越MP3所以我一直压的AAC音频,封包也就用了MP4。以下测试的Xvid视频B帧均设置为4:
.    AVI封包Xvid视频、AAC音频,画面以超快的速度播放,音频正常播放。输入识别为“XVID”,帧率正常识别。
.    MP4封包Xvid视频、AAC音频,画面出现我上面提到的卡顿跳帧,音频正常播放。输入识别为“MP4V”,帧率无法识别。
.    AVI封包Xvid视频、MP3音频,电脑播放识别正常,掌上设备视频音频均流畅播放。
.    看来封包的各项标准都是有自己的严格规定的。PC能通吃各种视频也仅仅依靠强大的处理器和软件解决的。

liaojingdb 发表于 2011-4-19 01:09:02

本帖最后由 liaojingdb 于 2011-4-19 02:34 编辑

.    下面我就是贴百度搜到关于Xvid和B帧的一些信息:
为什么320X240 xvid,343kbps,23.97帧的视频在m8上如此吃力?
http://bbs.meizu.com/thread-767542-1-1.html

关于视频播放的流畅度不足(这个帖子拍摄了实际播放情况,第一个就是我说的那种卡顿跳帧现象)
http://bbs.meizu.com/thread-745421-1-1.html

IsaacZ 发表于 2011-4-19 08:29:50

感谢楼主细致的测试和讲解。很受益!
页: [1]
查看完整版本: Xvid压制带B帧视频复杂画面丢帧怎么解决?