【H5视频活体检测】-示例工程运行(Java)
756665228 发布于2018-06-05 10:21 浏览:2406 回复:4
3
收藏
最后编辑于2019-09-10

能力介绍
业务能力
H5视频活体检测产品,是由两个接口组合而成,主要用于在H5场景下,通过用户新录制并上传一个视频,来进行活体检测的判断。相对于APP有动作校验+静默图片活体、静默图片活体这两种方式,H5视频活体方案比APP方案更加灵活,同时比单张图片活体方式更加安全。其主要功能如下所示:

语音校验码:为防止用户提交非当前操作的视频,在录制视频时,随机分配一个数字,用户需要读出这个数字,声音存于视频当中,并在后续识别时校验,以判断是否为此次会话。
视频多帧活体检测:录制并上传的视频,会在云端进行随机抽帧分析,并得出最终的活体检测分数。
主要适用场景
微信服务号:用于对操作用户真实性要求严格的场景,用于依托于微信服务号的金融开户、实名认证、账户信息变更二次验证等服务。
APP内Webview:对于如Cordova架构开发的APP,或者APP内变更频繁的身份信息页等情况,可以采用此方案完成活体检测。
浏览器:如果仅是一个H5宣传页,或者Wap版本网页等,可以通过此方法快速集成更加安全的活体检测功能。
此方案的优劣势
优势:相对于APP有动作校验、单张图片静默判断,此方法在没有APP情况下,可以更快速、轻量级地实现活体检测,同时保障一定安全性。
劣势:由于视频较大,上传时间可能较长,另由于不同手机的浏览器内核差异较大,容易出现兼容性问题。

Demo下载地址:https://pan.baidu.com/s/1cOWwyBSkir6nR9v0isteUw  (Idea开发工具导入)

MyEclipse导入:https://gitee.com/xshuai/h5_video_active_detection

在线体验地址
http://xs.kundadahh.club/pc      pc版的
http://xs.kundadahh.club/mobile 移动版

因为小帅丶习惯MyEclipse。就改成了MyEclipse  project 

项目地址:https://gitee.com/xshuai/h5_video_active_detection 

整体框架:SpringBoot 2.0.1 + thymeleaf 小帅丶自己加了单例加载AipFace

  • BDFactory
package com.baidu.ai.demo.factory;

import com.baidu.aip.face.AipFace;
/**
 * 单例工厂类
 * @author 小帅丶
 */
public class BDFactory {
	private static AipFace aipFace;
	 /**
     * 百度云 应用管理相关配置, 建议放在配置文件中
     */
    private static String appId = ""; // https://cloud.baidu.com 应用管理获取 AppID
    private static String apiKey = "";// https://cloud.baidu.com 应用管理获取 API Key
    private static String secretKey = ""; // https://cloud.baidu.com 应用管理获取 Secret Key
    /**
     * 单例加载 
     * @return AipFace
     */
	public static AipFace getAipFace(){
		if(aipFace==null){
			synchronized (AipFace.class) {
				if(aipFace==null){
					aipFace = new AipFace(appId,apiKey,secretKey);
				}
			}
		}
		return aipFace;
	}

}
  •  App修改后的代码
package com.baidu.ai.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.ApplicationPidFileWriter;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * Java doc
 *
 * @author songqingyun@baidu.com on 2018/5/15.
 */
@SpringBootApplication
@ComponentScan(basePackages = {"com.baidu.ai.demo"})
public class App  implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/faceliveness/dist/**")
                .addResourceLocations("classpath:/dist/").setCachePeriod(0);
    }
    @Bean
    public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {
        ServletRegistrationBean registration = new ServletRegistrationBean(dispatcherServlet);
        registration.getUrlMappings().clear();
        registration.addUrlMappings("/");
        return registration;
    }

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(App.class);
        application.addListeners(new ApplicationPidFileWriter());
         application.run(args);
    }
}
  • 修改application.properties(port修改成自己喜欢的即可也可以不修改)
//默认端口 8013 如需可以自行更改
server.port=8013
spring.profiles.active=dev
spring.aop.proxy-target-class=true
debug=true

spring.thymeleaf.cache=false
spring.thymeleaf.check-template=false
spring.thymeleaf.check-template-location=false
spring.thymeleaf.enabled=true
spring.thymeleaf.encoding=UTF-8
#spring.thymeleaf.excluded-view-names=
spring.thymeleaf.mode=HTML
spring.thymeleaf.prefix=classpath:/templates/
#spring.thymeleaf.reactive.max-chunk-size=
#spring.thymeleaf.reactive.media-types=
spring.thymeleaf.servlet.content-type=text/html
spring.thymeleaf.suffix=.html
  • 运行App.java代码即可启动项目
访问地址
PC: http://127.0.0.1:8013/pc
Mobile: http://127.0.0.1:8013/mobile

------------------------------------项目截图------------------------------------

 

 

 

带有演示图片的帖子地址:https://my.oschina.net/xshuai/blog/1824324

以上就是百度Demo的运行

收藏
点赞
3
个赞
共4条回复 最后由756665228回复于2019-09-10 13:32
#5756665228回复于2019-09-10 13:32:42
#4 159*****210回复
你好 为什么安卓手机微信端 无法上传视频进行验证

不知道呀。这个是官方给的Demo。JS代码写的是否完美兼容所有平台所有设备还真不清楚。

1
#4159*****210回复于2019-09-10 13:14:37

你好 为什么安卓手机微信端 无法上传视频进行验证

0
#3186******79回复于2019-01-10 15:09:37

我想问一下,在点击"确认开始验证"访问后台语音效验码接口,返回的参数只有errno,msg,data;页面上需要这个body参数哪来的?怎么都从body里面取返回的参数?

1
#2荒墨丶迷失回复于2018-06-05 11:06:14

这么快就测试完了 这个DEMO 我还在自己搞……

1
TOP
切换版块