LFLiveKit支持自定义filter

最近在研究直播过程中动态在在主播人脸上添加贴纸,之前推流端使用的是VideoCore,底层是C++实现,其Mixer不大好扩展,于是把推流端改用LFLiveKit,因为LFLiveKit支持GPUImage,GPUImage的好处是图片的处理灵活,可以使用多个滤镜组合来完成最终的图片合成。

使用的过程中发现滤镜不好扩展,图片处理在LFVideoCapture中,如果自定义Filter需要修改LFLiveKit的源代码。于是对源代码做了一些改动,LFLiveSession提供filter接口,通过设置filter改变直播中使用的滤镜。并且提供一个支持水印和任何filter合成的filterGroup——LFFilterWithWaterMaskFilter。

/**

** A filter to process Video from Camera

*/

@property(nonatomic,strong, nullable) GPUImageOutput *filter;

美颜和水印可以通过LFFilterWithWaterMaskFilter 滤镜合成一个滤镜,使用方法如下:

- (GPUImageOutput *)myFilter {

if(_myFilter ==nil) {

UIImageView*imageview = [[UIImageViewalloc]initWithFrame:CGRectMake(60,100,65,22)];

imageview.image= [UIImageimageNamed:@"huzi.png"];

LFGPUImageBeautyFilter*beauty = [[LFGPUImageBeautyFilteralloc]init];

LFFilterWithWaterMaskFilter *filter = [[LFFilterWithWaterMaskFilter alloc]initWithWaterMaskView:imageview filter:beauty];

filter.videoSize=self.frame.size;

_myFilter = filter;

}

return_myFilter;

}

具体的使用方法可以看源代码

BPLiveKitTestDemo

改动后就可以自定义滤镜了,后续写一个检测人脸,并且根据眼睛,鼻子,嘴巴位置贴图的滤镜,实现类似FaceU的功能。

你可能感兴趣的:(LFLiveKit支持自定义filter)