万众期待的【人脸驱动】蚂蚁呀嘿来了【Java】
用户已被禁言 发布于2021-05 浏览:4492 回复:4
1
收藏

春天随着落花走了,夏天披着一身的绿叶儿在暖风里蹦跳着走来了

今天小帅丶给开发者带来了人脸驱动接口的评测-Java语言

接口文档:https://ai.baidu.com/ai-doc/FACE/Eknx5xyfg (一定要看哦)

由于是邀测接口,需要提交工单申请哦~

特效用户交流QQ群:583486416

能力介绍
上传包含人脸的照片和一段表情丰富的人脸视频,即可用视频中人物的表情驱动静态照片,

生成视频,让静态的照片变得鲜活生动,可用于制作各种趣味视频及个性表情包

表情迁移:将视频中的人脸表情迁移至静态照片中
唇形迁移:将视频中人脸的唇形动作迁移到静态照片中

注意:项目为Java项目,使用Maven搭建,需要开发工具安装lombok插件哦

需要引入额外的JAR 

Hutool 发送HTTP请求
FastJson 处理数据为json格式
Lombok 简化代码

STEP 1 获取AccessToken

https://ai.baidu.com/ai-doc/REFERENCE/Ck3dwjhhu#%E8%8E%B7%E5%8F%96access-token

STEP 2 准备必要属性

    /** AccessToken */    
    public static String ACCESS_TOKEN = "";
    /** 人脸驱动任务创建 */
    public static String  FACE_DRIVE_ADD = "https://aip.baidubce.com/rest/2.0/face/v1/vmfacedrive/task/add";
    /** 人脸驱动任务查询 */
    public static String  FACE_DRIVE_GET = "https://aip.baidubce.com/rest/2.0/face/v1/vmfacedrive/task/get";
    /** 人脸驱动模板ID 目前仅支持这一个*/
    public static String  TEMPLATE_ID = "template_v3TUE5MVRCDZ";

STEP 3 编写创建任务的代码

    /**
     * @Author 小帅丶
     * @Description 人脸驱动任务创建
     * @Date  2021-05-12 14:07
     * @param imagePath  	背景图片本地路径
     * @return java.lang.String
     **/
    public String faceDriveAdd(String imagePath) throws Exception{
        FaceDriverVirtualRequestBean bean = new FaceDriverVirtualRequestBean();
        bean.setAppid(APPID);
        bean.setTemplate_id(TEMPLATE_ID);
        String image = Base64Util.encode(FileUtil.readFileByBytes(imagePath));
        bean.setImage(image);
        String result = HttpUtil.post(FACE_DRIVE_ADD + "?access_token=" + ACCESS_TOKEN, JSON.toJSONString(bean));
        return result;
    }

调用需要用的一个Java对象(为了方便传递参数)

import lombok.Data;
/**
 * @author 小帅丶
 * @className FaceDriverVirtualRequestBean
 * @Description 请求参数
 * @Date 2021-05-12-13:51
 **/
@Data
public class FaceDriverVirtualRequestBean {
    private String appid;
    private String task_id;
    /*****人脸驱动*****/
    private String image;
    private String template_id;
}

STEP 4 编写查询任务的代码-备用

    /**
     * @Author 小帅丶
     * @Description 人脸驱动任务查询
     * @Date  2021-05-12 14:07
     * @param taskId  	视频融合任务ID
     * @return java.lang.String
     **/
    public String faceDriveGet(String taskId){
        FaceDriverVirtualRequestBean bean = new FaceDriverVirtualRequestBean();
        bean.setAppid(APPID);
        bean.setTask_id(taskId);
        String result = HttpUtil.post(FACE_DRIVE_GET + "?access_token=" + ACCESS_TOKEN, JSON.toJSONString(bean));
        return result;
    }

STEP 5 创建一个人脸驱动任务

imagePath为本地图片路径,图片中最好包含人脸

    public static void main(String[] args)throws Exception {
        //单人脸图片
        String imagePath = "F://testimg//myyh.jpg";
        //人脸驱动任务创建
        String result = faceDriverSample.faceDriveAdd(imagePath);
        System.out.println("result = " + result);
    }

返回的内容-taskId保存备用

{
    "result":{
        "task_id":"v9u1AL3bbVkG"
    },
    "log_id":5589101754594,
    "error_msg":"SUCCESS",
    "cached":0,
    "error_code":0,
    "timestamp":1621246355
}

STEP 6 查询人脸驱动任务状态

    public static void main(String[] args)throws Exception {
        //人脸驱动任务查询
        String result = faceDriverSample.faceDriveGet("v9u1AL3bbVkG");
        System.out.println("result = " + result);
      
    }

这里有三种任务状态 running(任务进行中)/success(任务成功)/failed(任务失败)

返回的内容-videoUrl即为生成的视频地址 只有success才会返回videoUrl

URL已经被小帅处理了。开发者们无需复制粘贴去查看到底是什么哦

{
    "result":{
        "video_url":"https://facefusion-2021-peoplesdaily.cdn.bcebos.com/mp4/77742f2b-9ade-4976-9b8b-c2afe2b89949.mp4",
        "status":"success"
    },
    "log_id":7905359499652,
    "error_msg":"SUCCESS",
    "cached":0,
    "error_code":0,
    "timestamp":1621246380
}

 

小帅的一些意见建议和问题

1.接口返回是否可以增加视频过期时间
2.是否可以考虑增加回调到用户的服务呢。查询的接口进行轮询不是很友好
3.查询是否支持多个taskId查询呢
5.MP4导入剪映没有画面(在小程序是正常的,下载导入剪映是没有画面的,需要再次转换MP4编码)
6.人脸驱动不支持多人脸操作(仅仅是单人脸,功能太单一)

微信扫码快速体验

需要去我的-我的记录进行查询,当任务状态为 成功 则可以点击查看详情,

默认MP4可以直接显示在微信播放。如果无法播放,可以复制链接在手机或PC浏览器打开查看

收藏
点赞
1
个赞
共4条回复 最后由ghjgfghghg回复于2022-12
#5用户已被禁言回复于2021-05
#4 BaPlayer回复
一直都是ruunig状态,过了一下午都是running状态 已经提交工单处理 最后处理结果我会记录在这里
展开

可能你这个属于 badcase了。看百度技术怎么排查吧。

1
#4BaPlayer回复于2021-05

一直都是ruunig状态,过了一下午都是running状态

已经提交工单处理

最后处理结果我会记录在这里

0
#3用户已被禁言回复于2021-05
#2 BaPlayer回复
返回结果一直是running是为啥子???

这个是需要一定时间去处理。

你是过了多久查询还是 running的呢?建议这块最好描述一下。

返回的LOGID之类的记录一下。提交到百度工单让百度技术帮你查看一下。

1
#2BaPlayer回复于2021-05

返回结果一直是running是为啥子???

0
TOP
切换版块