LFLiveKit支持自定義filter

最近在研究直播過程中動態(tài)在在主播人臉上添加貼紙,之前推流端使用的是VideoCore,底層是C++實現(xiàn),其Mixer不大好擴展,于是把推流端改用LFLiveKit,因為LFLiveKit支持GPUImage,GPUImage的好處是圖片的處理靈活,可以使用多個濾鏡組合來完成最終的圖片合成。

使用的過程中發(fā)現(xiàn)濾鏡不好擴展,圖片處理在LFVideoCapture中,如果自定義Filter需要修改LFLiveKit的源代碼。于是對源代碼做了一些改動,LFLiveSession提供filter接口,通過設(shè)置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

改動后就可以自定義濾鏡了,后續(xù)寫一個檢測人臉,并且根據(jù)眼睛,鼻子,嘴巴位置貼圖的濾鏡,實現(xiàn)類似FaceU的功能。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容