Skip to content
yulin6666 edited this page Apr 12, 2017 · 48 revisions

1. 介绍

美颜是指对主播图片进行美白、磨皮、红润等效果,目前SDK内置了如下6种美颜:

Filter 名称 美白
效果
磨皮
效果
红润
效果
是否依赖
KSYGPUResource.
bundle
KSYGPUBeautifyExtFilter 嫩肤
KSYGPUBeautifyFilter 白肤
KSYGPUDnoiseFilter 自然
KSYGPUBeautifyPlusFilter 柔肤
KSYBeautifyFaceFilter 白皙
KSYBeautifyProFilter 粉嫩

效果描述是只针对默认效果,后两个滤镜的三种效果参数可独立调节,其余滤镜只能设置等级,详见接口

美颜视频效果

ScreenShot

2. 注意事项

  1. v1.8.1 新增 美颜滤镜KSYBeautifyFaceFilter, 如果启用红润参数需要依赖KSYGPUResource.bundle中的资源
  2. v1.8.1 新增 特效滤镜KSYBuildInSpecialEffects, 其中包括6种内置特效和自定义特效接口, 需要依赖 KSYGPUResource.bundle中的资源
  3. v1.9.3 新增 美颜滤镜KSYBeautifyProFilter, 本次主要针对之前美颜存在肤色不自然、偏色等问题,以及针对我们的使用场景,对美颜进行了优化, 需要依赖 KSYGPUResource.bundle中的资源

3. 特效滤镜

特效滤镜都需要用到资源文件, 如果直接使用KSYGPUResource.bundle,可以通过 setSpecialEffectsIdx来进行设置

//初始化并指定effectIdx来创建对应效果
KSYBuildInSpecialEffects * sf = [[KSYBuildInSpecialEffects alloc] initWithIdx:1];
//指定effectIdx来切换到对应效果
[sf setSpecialEffectsIdx: effectIdx];

effectIdx 与描述的对应关系如下:

effectIdx 名称及效果 资源文件名称 引入版本
1 小清新 1_xiaoqingxin.png v1.8.1
2 靓丽 2_liangli.png v1.8.1
3 甜美可人 3_tianmeikeren.png v1.8.1
4 怀旧 4_huaijiu.png v1.8.1
5 蓝调 5_landiao.png v1.8.1
6 老照片 6_laozhaop.png v1.8.1
7 樱花 7_yinghua.png v2.1.0
8 樱花(光线较暗) 8_yinghua_night.png v2.1.0
9 红润(光线较暗) 9_hongrun_night.png v2.1.0
10 阳光(光线较暗) 10_yangguang_night.png v2.1.0
11 红润 11_hongrun.png v2.1.0
12 阳光 12_yangguang.png v2.1.0
13 自然 13_ziran.png v2.1.0

4. KSYGPUResource.bundle 相关

  1. 如果只需要其中的一个或几个效果(而不是全部), 可以不引入KSYGPUResource.bundle, 只需要将选中效果对应的png资源文件放到main bundle中即可.

  2. 美颜滤镜 KSYBeautifyFaceFilter 和 KSYBeautifyProFilter 只依赖 KSYGPUResource.bundle 中 0_ 开头的png文件, 如果只需要美颜滤镜, 也可以不引入KSYGPUResource.bundle, 只需要将0_开头的资源文件放到main bundle中即可. 比如(0_hongrun2.png, 0_meibai.png, 0_pink.png )

5.自定义滤镜

用户如果需要自定义滤镜,滤镜必须是继承GPUImageOutput类的,而且实现了GPUImageInput协议,使用方法参考下面的示例。

6. 使用示例

初始化滤镜

  • 美颜滤镜
  //初始化滤镜
 _filter = [[KSYGPUBeautifyExtFilter alloc] init];
  • 滤镜组合
 //初始化美颜滤镜
 KSYGPUBeautifyExtFilter * bf = [[KSYGPUBeautifyExtFilter alloc] init];
 //初始化褐色(怀旧)滤镜
 GPUImageSepiaFilter * pf =[[GPUImageSepiaFilter alloc] init];
 //组装滤镜
 [bf addTarget:pf];
 //初始化滤镜组
 GPUImageFilterGroup * fg = [[GPUImageFilterGroup alloc] init];
 //将滤镜添加到滤镜组
 [fg addFilter:bf];
 [fg addFilter:pf];
 //组装滤镜
 [fg setInitialFilters:[NSArray arrayWithObject:bf]];
 [fg setTerminalFilter:pf];
 _filter = fg;                
  • 美白滤镜
//初始化美颜滤镜
 _filter = [[KSYBeautifyFaceFilter alloc] init];

设置滤镜

[_kit setupFilter: _filter];

调整滤镜参数

对于美颜滤镜可以调节美颜等级
[(KSYGPUBeautifyExtFilter *)_filter setBeautylevel: level];//level 1.0 ~ 5.0

对于美白滤镜可以调节磨皮、白皙的等级
(KSYBeautifyFaceFilter *)_filter.grindRatio = level;//0.0 ~ 0.8 0.7为默认等级
(KSYBeautifyFaceFilter *)_filter.whitenRatio = level;//0.0 ~ 1.0 0.5为默认等级

取消滤镜

_filter = nil;
[_kit setupFilter: _filter];//取消滤镜只要将_filter置为nil就行

7. 性能说明

测试说明

  • 温度取值摄像头下方
  • 设备为iphone6s iOS 9.3
  • 采集配置:分辨率360p、帧率15fps
Filter Name 名称 CPU占用(开启前) CPU占用(开启后) GPU占用(开启前) GPU占用(开启后) 设备温度(开启前) 设备温度(开启10mins后)
KSYGPUBeautifyExtFilter 嫩肤 21.85% 26.2% 20.4% 21.1% 30 32.4
KSYGPUBeautifyFilter 白肤 21.85% 27.15% 20.4% 22.1% 30 30.1
KSYGPUDnoiseFilter 自然 21.85% 25.7% 20.4% 25.4% 30 32.9
KSYGPUBeautifyPlusFilter 柔肤 21.85% 31.6% 20.4% 21.2% 30 32.7
KSYBeautifyFaceFilter 白皙 21.85% 25.1% 20.4% 23.7% 30 32.5

8. 效果示例

8.1 近景测试

KSYGPUBeautifyExtFilter KSYGPUBeautifyFilter
KSYGPUBeautifyExtFilter.png KSYGPUBeautifyFilter.png
KSYGPUDnoiseFilter KSYGPUBeautifyPlusFilter
KSYGPUDnoiseFilter.png KSYGPUBeautifyPlusFilter.png
KSYBeautifyFaceFilter 50% KSYBeautifyFaceFilter 100%
KSYGPUBeautifyProSharpenFilter.png KSYGPUBeautifyProWhitenFilter.png
某椒 某客
xjiao.png xke.png

8.2 远景测试

KSYGPUBeautifyExtFilter KSYGPUBeautifyFilter
KSYGPUBeautifyExtFilter.png KSYGPUBeautifyFilter.png
KSYGPUDnoiseFilter KSYGPUBeautifyPlusFilter
KSYGPUDnoiseFilter.png KSYGPUBeautifyPlusFilter.png
KSYBeautifyFaceFilter 50% KSYBeautifyFaceFilter 100%
KSYGPUBeautifyProSharpenFilter.png KSYGPUBeautifyProWhitenFilter.png
某椒 某客
xjiao.png xke.png

1. 推流环节说明

2. 特色功能说明

2.1 采集

2.2 音频处理

2.3 视频处理

2.4 编码

2.5 推流

2.6 输入多样化

2.7 集成

3. 第三方功能

4. 技术专栏

5. 已知问题

8. FAQ

金山云计算

Clone this wiki locally