Skip to content
Franken Zeng edited this page Nov 15, 2017 · 48 revisions

1. 介绍

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

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

KSYBeautifyProFilter中传入参数(1、2、3、4)区别仅仅在于磨皮,其中1比较柔和,但在较亮的场景下,画面会比较朦胧。3(natural)相对更加清晰,4最清晰。2和4相对1和3,计算更复杂。总体清晰度1<3<2<=4,处理速度(1=3)>(2=4)。

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

美颜视频效果

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,或者将资源图片都导入到MainBundle中去, 则可以直接通过 KSYBuildInSpecialEffects的effectType属性来进行切换.

//初始化并指定effectIdx来创建对应效果
KSYBuildInSpecialEffects * sf = [[KSYBuildInSpecialEffects alloc] initWithType:KSYGPUEffectType_Freshy];
//指定effectIdx来切换到对应效果
[sf setSpecialEffectsIdx: effectIdx];
// 通过effectType来切换效果
sf.effectType = KSYGPUEffectType_Sweety;

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

idx KSYGPUEffectType 名称及效果 资源文件名称 引入版本
1 Freshy 小清新 1_xiaoqingxin.png v1.8.1
2 Beauty 靓丽 2_liangli.png v1.8.1
3 Sweety 甜美可人 3_tianmeikeren.png v1.8.1
4 Sepia 怀旧 4_huaijiu.png v1.8.1
5 Blue 蓝调 5_landiao.png v1.8.1
6 Nostalgia 老照片 6_laozhaop.png v1.8.1
7 Sakura 樱花 7_yinghua.png v2.1.1
8 Sakura_night 樱花
(光线较暗)
8_yinghua_night.png v2.1.1
9 Ruddy_night 红润
(光线较暗)
9_hongrun_night.png v2.1.1
10 Sunshine_night 阳光
(光线较暗)
10_yangguang_night.png v2.1.1
11 Ruddy 红润 11_hongrun.png v2.1.1
12 Sushine 阳光 12_yangguang.png v2.1.1
13 Nature 自然 13_ziran.png v2.1.1
14 Amatorka 恋人 14_amatorka.png v2.9.1
15 Elegance 高雅 15_elegance.png v2.9.1
16 1977 红粉佳人 16_map_1977.png v2.9.1
17 Amaro 优格 17_*.png v2.9.1
18 Brannan 流年 18_*.png v2.9.1
19 Early_bird 柔光 *19_*.png v2.9.1
20 Hefe 经典 20_*.png v2.9.1
21 Hudson 初夏 *21_*.png v2.9.1
22 Ink 黑白 22_*.png v2.9.1
23 Lomo 纽约 *23_*.png v2.9.1
24 Lord_kelvin 上野 24_*.png v2.9.1
25 Nashville 碧波 25_*.png v2.9.1
26 Rise 日系 *26_*.png v2.9.1
27 Sierra 清凉 *27_*.png v2.9.1
28 Sutro 移轴 28_*.png v2.9.1
29 Toaster 梦幻 29_*.png v2.9.1
30 Valencia 恬淡 30_*.png v2.9.1
31 Walden 候鸟 *31_*.png v2.9.1
32 Xproll 淡雅 *32_*.png v2.9.1

表格中, * 表示通配符, 说明对应的效果需要多个资源文件,但是对应的资源文件都是用改效果的effectIdx作为前缀的 有的效果,相互之间会公用一些资源文件, 所以有的资源文件的前缀有多个effectIdx,用下划线分隔开了,比如19_23_31_32_vignette_map.png在effectIdx的19,23,31和32等4个效果中都有用到

4. KSYGPUResource.bundle 相关

  1. 资源文件的下载地址在这里 https://ks3-cn-beijing.ksyun.com/ksy.vcloud.sdk/Ios/KSYLive_iOS_Resource/KSYGPUResource.zip
  2. 如果只需要其中的一个或几个效果(而不是全部), 可以不引入KSYGPUResource.bundle, 只需要将选中效果对应的png资源文件放到main bundle中即可. 对应的依赖关系,请参照上图, 直观的说就是将以效果的effectIdx为前缀的png图片引入即可. 单独挑选时请注意有的效果需要多个图片.比如KSYGPUEffectType_Xproll, effectIdx为32, 需要依赖(32_xpro_map.png, 19_23_31_32_vignette_map.png 等两个图片)
  3. 美颜滤镜 KSYBeautifyFaceFilter 和 KSYBeautifyProFilter 只需要依赖三个图片文件, 如果只需要美颜滤镜, 也可以不引入KSYGPUResource.bundle, 只需要将0_hongrun2.png, 0_pink.png, 13_ziran.png等资源文件放到main bundle中即可.

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