本代码由**云信即时通讯**DEMO修改
添加faceunity module到工程中,在app dependencies里添加compile project(':faceunity')
在AVChatActivity的 onCreate方法中添加(初始化并加载美颜道具、默认道具)
mFURenderer = new FURenderer.Builder(this).createEGLContext(true).build();
mFURenderer.loadItems();
onDestroy方法中添加(销毁道具)
mFURenderer.destroyItems();
修改AVChatActivity的onVideoFrameFilter方法使用FURenderer将道具渲染到原始数据上
@Override
public boolean onVideoFrameFilter(AVChatVideoFrame frame, boolean maybeDualInput) {
mFURenderer.drawFrame(frame.data, frame.width, frame.height, frame.rotation);
return true;
}
在avchat_video_layout的末尾修改(在界面底部显示默认的道具选择控件)
<com.faceunity.beautycontrolview.BeautyControlView
android:id="@+id/faceunity_control"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/avchat_video_bottom_control" />
在onCreate方法中添加
mFaceunityControlView = (BeautyControlView) findViewById(R.id.faceunity_control);
mFaceunityControlView.setOnFaceUnityControlListener(mFURenderer);
Nama SDK发布地址,可查看Nama的所有版本和发布说明。 更新方法为下载Faceunity*.zip解压后替换faceunity模块中的相应文件。
修改faceunity中的界面代码 BeautyControlView等或者自己编写。
faceunity中EffectEnum指定的是effects里对应的道具的文件名,故如需增删道具只需要在effects增删相应的道具文件并在EffectEnum增删相应的项即可。
修改faceunity中BeautyControlView中以下代码
private float mFaceBeautyALLBlurLevel = 1.0f;//精准磨皮
private float mFaceBeautyType = 0.0f;//美肤类型
private float mFaceBeautyBlurLevel = 0.7f;//磨皮
private float mFaceBeautyColorLevel = 0.5f;//美白
private float mFaceBeautyRedLevel = 0.5f;//红润
private float mBrightEyesLevel = 1000.7f;//亮眼
private float mBeautyTeethLevel = 1000.7f;//美牙
private float mFaceBeautyFaceShape = 4.0f;//脸型
private float mFaceBeautyEnlargeEye = 0.4f;//大眼
private float mFaceBeautyCheekThin = 0.4f;//瘦脸
private float mFaceBeautyEnlargeEye_old = 0.4f;//大眼
private float mFaceBeautyCheekThin_old = 0.4f;//瘦脸
private float mChinLevel = 0.3f;//下巴
private float mForeheadLevel = 0.3f;//额头
private float mThinNoseLevel = 0.5f;//瘦鼻
private float mMouthShape = 0.4f;//嘴形
参数含义与取值范围参考这里,如果使用界面,则需要同时修改界面中的初始值。
nama库的使用参考这里。
除了使用制作好的道具外,还可以自行制作2D和3D道具,参考这里。