如何把“蚂蚁呀嘿”换脸特效用在前端 WebRTC 视频通话中

因为疫情的原因,线上视频会议软件异军突起,成为了在家办公的主要沟通渠道。而最近抖音上“蚂蚁呀嘿”恶搞换脸的小视频也突然火了起来,那我就想了想能不能在视频会议的时候换张脸活跃下气氛?在 Github 上一番搜寻之后发现还真有办法,有一个开源的 Python 人工智能换脸的库,那正好趁着这个机会研究一下前端 WebRTC 实现视频通话功能,外加换脸操作。先看一下效果吧:

换脸效果

因为有涉及到一点点的后台,所以项目分成了两部分,一个是用于存放前端代码的 frontend 项目和存放后端代码的 backend 项目:

项目根目录
  |-- backend
  |-- frontend

另外这个视频需要电脑上有摄像头,没有的话可以想办法把手机当作电脑的摄像头。

注意:本教程中的代码仅供展示 AI 换脸技术的应用,不可以用于获取其他人隐私或其他任何非法目的。

编写页面

因为是前端实现,首先肯定是编写页面。这个页面比较简单,就是一个视频组件、显示用户 ID 的文本、呼叫对方视频的输入框和按钮,视频组件默认显示自己的视频,当视频接通之后就会显示对方的视频,而自己的视频会缩小到右上角。

HTML

在 frontend 目录下新建 index.html、style.css 和 index.js 文件。首先看一下 HTML 结构,index.html 中主要的代码如下:

<!-- frontend/index.html -->
<head>
  <!-- 其他代码 -->
  <link rel="stylesheet" href="style.css" />
</head>
<body>
  <main>
    <div id="container">
      <div class="videos">
        <video id="myVideo" class="videoSize" autoplay></video>
        <video id="peerVideo" class="videoSize" autoplay></video>
      </div>
      <p id="idText"></p>
      <div class="call">
        <input type="text" id="peerIdInput" placeholder="请输入对方 id" />
        <button id="joinBtn">视频通话</button>
      </div>
    </div>
  </main>
  <script src="index.js"></script>
</body>

每个标签的作用是:

  • <main /> 用于设置页面背景,把所有组件居中对齐。
  • <div class="videos"> 里边分别放了显示自己视频 #myVideo 和对方视频 #peerVideo<video /> 组件,并设置为自动播放,以便于在加载摄像头后立刻开始播放画面。
  • <p id="idText"> 在页面打开时显示自己的用户 ID,相当于是电话号码。
  • <div class="call"> 里是输入对方 ID 的文本框 #peerIdInput 和呼叫按钮 #joinBtn
  • 最后在 <head /> 中引入样式文件 style.css,在 <body /> 结束前引入 index.js。我们将主要在 index.js 中编写代码。

CSS

css 的代码都比较简单,基本就是设置一下样式,这里介绍一下重要的部分,剩余的可以在源代码中查看。因为自己的视频要在视频接通时移动到右上角,那么就需要把 <div class="videos"> 容器设置为相对定位,把我的视频和对方的视频设置成一样的宽高,然后先隐藏对方视频,当视频接通时,利用 JavaScript 加上接通后,我的视频的样式,把我的视频设置为绝对定位,宽高调小,放到右上角:

/* frontend/style.css */
videos {
   
  position: relative;
}

.videoSize {
   
  width: 500px;
  height: 600px;
  object-fit: cover; /* 让视频按比例占满整个空间 */
}

.rightTop {
   
  /* 以下是通话中的样式 */
  position: absolute;
  width: 150px;
  height: 180px;
  right: 0;
  top: 0;
}

#peerVideo {
   
  <
  • 27
    点赞
  • 54
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 15
    评论
### 回答1: 使用DeepFaceLab进行视频需要以下几个步骤: 1. 准备好源视频和目标图片。 2. 使用DeepFaceLab的"Extract"功能提取源视频的人。 3. 使用DeepFaceLab的"Convert"功能将目标图片转为适合的格式。 4. 使用DeepFaceLab的"Merge"功能将源视频的人与目标图片合并。 5. 使用DeepFaceLab的"Render"功能将合并后的视频渲染成最终的视频。 注意: DeepFaceLab是一个开源软件,使用这个软件可能会违反著作权法. ### 回答2: DeepFaceLab是一种基于人工智能技术的视频工具,下面是使用DeepFaceLab进行视频的步骤: 1. 准备素材:选择一个清晰的源视频和目标视频。源视频是希望更部的人物视频,目标视频是希望替为源视频人物部的视频。确保两个视频的人物部要尽可能保持相似。 2. 下载和配置DeepFaceLab:从官方网站下载DeepFaceLab,并按照相关指引进行配置,包括安装环境、设置GPU等。 3. 数据集准备:使用DeepFaceLab自带的工具将源视频和目标视频的人截取出来,并分别放入对应的文件夹。可以多截取几个角度和表情以提高效果。 4. 预处理:运行DeepFaceLab的预处理脚本,对素材进行处理以提高后续处理效果。这一步会进行人对齐、抠图、人切割等。 5. 训练模型:使用DeepFaceLab的训练脚本来训练模型。这一步需要耐心等待,因为模型的训练需要消耗较长的时间。可以根据自己的需要调整训练的参数。 6. 处理:使用训练好的模型进行处理。通过运行DeepFaceLab提供的命令行操作,将源视频的人到目标视频的相应位置,并生成结果视频。可以根据需要调整的精度和速度等参数。 7. 后处理:生成的结果视频可能还有一些不完美的地方,可以使用视频编辑软件进行后期处理,如进一步调整部替的效果、编辑合成等。 需要注意的是,DeepFaceLab是一项技术含量较高的工具,对硬件要求较高,而且使用过程可能会遇到一些技术问题。因此,初次使用者建议先阅读官方文档并参考相关教程进行学习和实践,以便更好地掌握和使用该工具。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

峰华前端工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值