关键字:播放 残影
简介:播放有残影、水纹,是因为某些帧没有参与解码。
专门截图,可以看看是怎样的:https://blog.csdn.net/quantum7/article/details/89297300
以前做视频的时候,因为软解性能差,对于1080P无能为力,于是想到了硬解。找到了硬解资料调通,测试播放时发现,开始几秒还好,过一会就有类似水纹的残影。反复检查、修改代码,找不到原因,也无法解决此问题,只好放弃。
近来做新的视频播放功能,突然发现平常播放(调用了硬解)正常的功能,也有了残影水纹。开始以为是代码问题,反复检查、回滚,没有解决;后来以为是发送方问题,又一番折腾,还是没有解决。经过一个星期的反复折腾,找不到原因,只能放弃。
之后发现播放时帧率,低于发送方的帧率。于是又检查代码,原来有人根据自己理解,随意加了一个帧率控制代码(实际上对于发送、接收来说,帧都不是均匀到达的)。去掉这部分代码后,帧率正常了,残影也很神奇的没有了。
于是就明白了,残影水纹产生的原因是:编码方编码(软编、硬编)产生的帧,解码方(使用硬解,软解一般无此问题)只解码了一部分。出现这种情况,有几种可能:
编码了,发送时做了控制,过滤了一些。
网络太差,接收方丢弃了不完整的帧。这只会偶尔发生。各位在看网络视频时,也会发现这种情况。
硬件解码时播放时做了控制,放弃了一些帧。
考虑到实际情况,帧率控制应该在发送方处理,而且要在编码之前。