小鱼易连平台支持智能人脸识别相关功能,具体功能说明可参考小鱼易连产品说明文档。
人脸识别服务需要进行开通后才能使用,并且需要进行一定的前期准备工作,比如上传人脸照片。因此在集成之前请通过商务及技术支持获取相关协助。
SDK 封装了人脸识别场景中的功能接口,开发者可通过 API 快速获取人脸识别信息,之后可对获取到的人脸信息进行简单处理并显示到会议画面中。以此方式可实现典型的人脸识别应用场景。(开始支持版本:v3.3.1)
在平台后台开通人脸识别并且上传用户照片信息后,会议中会收到 onAiFace 人脸信息回调,回调中包含了参会者 pid,以及人脸位置信息。接下来需要调用 Rest 查询接口去查询每一个 faceId 对应的人脸信息。目前版本 SDK 含有此 RestApi 接口,后续版本将移动到接口服务模块,需要自行编写 Rest 请求。 getFaceInfo:获取单个人脸信息;getMultiFaceInfo:获取多个人脸信息; 获取到人脸信息后,可以将录入的人脸 faceId 对应的人名以及人脸 Postion 绘制到屏幕上。FacePosition中各个位置参数的含义如下图所示:
public class FacePosition implements Serializable, Parcelable {
/**
* 人脸的id
*/
private long faceId;
/**
* 检测人脸的左侧距离
*/
private float left;
/**
* 检测人脸的顶部距离
*/
private float top;
/**
* 检测人脸的右侧距离
*/
private float right;
/**
* 检测人脸的底部距离
*/
private float bottom;
}
这里的人脸位置是检测的相对位置,不是显示 View 的具体位置。假设显示人脸的 VideCell 的尺寸为 W 和 H,则某一个人脸的显示框的检测位置示意图如下: 计算公式如下:
float left = W * position.getLeft() / 10000.0F;
float top = H * position.getTop() / 10000.0F;
float right = W * position.getRight() / 10000.0F;
float bottom = H * position.getBottom() / 10000.0F;
由于本地视频为镜像视频,所以人脸位置也是需要镜像,人脸显示的位置坐标如下:
//本地人脸框位置
float startX = W - right;
float endX = W - left;
float startY= top;
float endY = bottom;
//远端人脸框位置
float startX = left;
float endX = right;
float startY= top;
float endY = bottom
之后讲对应的坐标绘制在视频窗口 VideoCell 上即可完成人脸识别功能。
3.3.1版本替换为新版本人脸识别方案,主要的接入流程分为以下几点:
1.设置人脸开关
Settings settings = new Settings();
settings.setEnableFaceRecognize(true);
NemoSDK.getInstance().init(this, settings, callBack);
2.会中打开人脸识别开关
NemoSDK.getInstance().enabledFaceDetectType(FaceDetectType.FACE_MEETING_RECOGNIZED, true);
3.请流增加请求人脸信息标识
LayoutElement layoutElement = new LayoutElement();
layoutElement.setRequestFaceDetect(true);
NemoSDK.getInstance().setLayoutBuilder(builder);
4.接收人脸信息回调
NemoSDK.getInstance().setNemoSDKListener(new SimpleNemoSDkListener() {
@Override
public void onAiFace(AIParam aiParam, boolean isLocalFace) {
super.onAiFace(aiParam, isLocalFace);
}
});
5.通过OpenApi接口获取人脸信息
6.绘制人脸框/铭牌
以上就是新版本人脸的接入流程,此外新增了广播名牌模式,可以通过FaceDetectType来设置。
更多详细的使用可以参考MeetingKit中人脸识别功能的实现。
暂无
setNemoSDKListener getFaceInfo getMultiFaceInfo