FUNIMLiveEntDemo2 是集成了 Faceunity 面部跟踪和虚拟道具功能 和 网易云信互动直播功能的 Demo。
本文是 FaceUnity SDK 快速对接 网易云信互动直播 的导读说明
关于 FaceUnity SDK 的更多详细说明,请参看 FULiveDemo
美颜工具条的显示: 运行程序-> 主播端 -> 主播推流 -> 视频直播 -> 开始直播
将 FaceUnity 文件夹全部拖入工程中,NamaSDK所需依赖库为 OpenGLES.framework、Accelerate.framework、CoreMedia.framework、AVFoundation.framework、libc++.tbd、CoreML.framework
- 备注: 上述NamaSDK 依赖库使用 Pods 管理 会自动添加依赖,运行在iOS11以下系统时,需要手动添加
CoreML.framework,并在TARGETS -> Build Phases-> Link Binary With Libraries将CoreML.framework手动修改为可选Optional
-FUManager //nama 业务类
-FUCamera //视频采集类(示例程序未用到)
-authpack.h //权限文件
+FUAPIDemoBar //美颜工具条,可自定义
+items //贴纸和美妆资源 xx.bundel文件
1、在 NTESAnchorLiveViewController.m 中添加头文件,并创建页面属性
/* faceU */
#import "FUAPIDemoBar.h"
#import "FUManager.h"
@property (nonatomic, strong) FUAPIDemoBar *demoBar;2、初始化 UI,并遵循代理 FUAPIDemoBarDelegate ,实现代理方法 bottomDidChange: 切换贴纸 和 filterValueChange 更新美颜参数。
-(FUAPIDemoBar *)demoBar{
if (!_demoBar) {
_demoBar = [[FUAPIDemoBar alloc] initWithFrame:CGRectMake(0, self.view.frame.size.height - 300, self.view.frame.size.width, 194)];
//_demoBar.hidden = YES;
_demoBar.mDelegate = self;
}
return _demoBar ;
}// 切换贴纸
-(void)bottomDidChange:(int)index{
if (index < 3) {
[[FUManager shareManager] setRenderType:FUDataTypeBeautify];
}
if (index == 3) {
[[FUManager shareManager] setRenderType:FUDataTypeStrick];
}
if (index == 4) {
[[FUManager shareManager] setRenderType:FUDataTypeMakeup];
}
if (index == 5) {
[[FUManager shareManager] setRenderType:FUDataTypebody];
}
}// 更新美颜参数
- (void)filterValueChange:(FUBeautyParam *)param{
[[FUManager shareManager] filterValueChange:param];
}/* faceU */
[[FUManager shareManager] loadFilter];
[FUManager shareManager].isRender = YES;
[FUManager shareManager].flipx = NO;
[FUManager shareManager].trackFlipx = NO;
[self.innerView addSubview:self.demoBar];视频数据处理Block,在 NTESMediaCapture.m 的 processVideoSampleBuffer:
- (void)processVideoSampleBuffer:(CMSampleBufferRef)sampleBuffer
{
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
/* faceU */
[[FUManager shareManager] renderItemsToPixelBuffer:pixelBuffer];
1 视图控制器生命周期结束时,销毁道具
[[FUManager shareManager] destoryItems];2 切换摄像头需要调用,切换摄像头
[[FUManager shareManager] onCameraChange];