最近在做直播的时候发现,播放端画面经常会出现很小的方块,就像一个个很小的马赛克一样,导致的结果是主播的脸有时候很光滑有时候像麻子一样,这怎么能忍呢?其实人家根本没有那么丑。
直接用ffplay播放则是一切正常,只有在我们的客户端才有这个问题。我们用的是ijkplayer,与ffplay同样都是基于ffmepg,可以定位到是播放器参数的问题。
经过一顿操作,定位到下面这行代码:
[options setOptionValue:@"48" forKey:@"skip_loop_filter" ofCategory:kIJKFFOptionCategoryCodec];
loop_filter
是指环路滤波, 主要是用于画面去块.
skip_loop_filter
是指对指定帧不做环路滤波, 可以节省CPU.
其中48是指AVDISCARD_ALL
, 所有帧都不做环路滤波,所以出来的画面会有一个个小方块,最后直接把这行代码干掉解决问题。