使用libavcodec/h264解码后,确定帧中的伪影级别

4
我正在使用libavcodec解码H264流。由于流从网络接收,因此有时会缺少NAL单元,导致帧中出现伪影。之后,使用DirectShow渲染该帧。
当解码期间出现错误时,它会通过libavcodec日志回调进行通知。问题是-一些伪影将持续多个帧,并且libavcodec不会为损坏的帧之后的帧发出伪影信号。
我想仅呈现低于某种伪影级别的帧,同时避免显示太“破碎”的帧。是否可以通过libavcodec API找出已解码图片的伪影级别,或者我需要自己检测这些伪影(在这种情况下,是否存在最佳实践)?
1个回答

1
到目前为止,最好的方法是从libavcodec日志字符串中累加工件计数,并在每帧中减少它,避免在工件计数高时显示帧。例如: libavcodec日志:模块h264,级别32:隐藏I帧中的2480个DC、2480个AC、2480个MV错误 如果将工件阈值设置为1000,并在每帧中将工件级别减少1000,则上述日志字符串将使2个帧被丢弃。
这种方法是推测性的(不是“干净”的解决方案),但它有效。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接