专栏首页AI科技时讯DeepFaceLab坑之ffmpeg

DeepFaceLab坑之ffmpeg

DeepFaceLab是一款支持视频或图片的换脸开源软件,其使用非常简单,有官方的juptyer notebook案例,这里不做过多的教程介绍。

在使用过程中遇到的一点问题,在这里记录一下。DeepFaceLab的详细步骤分为五步:

  • 准备好workspace
    • 原始素材(视频/照片)
    • 目标素材(视频/照片)
  • 安装deepfacelab
    • 从git上下载即可
  • 提取脸部
    • 提取原始素材面部(如果是视频,需要先转换为多张图片)
    • 提取目标素材面部(如果是视频,需要先转换为多张图片)
  • 训练模型
    • 设置训练的一些参数,参数含义需要理解清楚
  • 转换输出
    • 首先进行图片融合
    • 其次将融合后的图片转换为视频

上述过程按照流程走都挺顺利的,到了转换输出这一步骤的第二步出现问题:

Unknown encoder 'libx264'

问题出在ffmpeg包上,没有编码器,查找相关的资料:

https://stackoverflow.com/questions/9764740/unknown-encoder-libx264

按照以下流程走了一遍,还是不通:

最终放弃,从头开始捋一遍。在main.py函数中调用了ffmpeg,是python版本的,之前按照requrest.txt安装了,不能正常使用,原因在于调用的时候出现的配置如下:

--disable-libx264

disable-libx264导致无法找到编码器,卸载后重新安装,使用conda在虚拟环境中安装一遍:

conda install ffmpeg -c conda-forge

重新运行,成功运行将图片转成视频:

-dir ../workspace/yc_dst/Enter FPS ( ?:help skip:fullfps ) : fullfps
0
Output image format? ( jpg png ?:help skip:png ) : jpg
ffmpeg version 4.2 Copyright (c) 2000-2019 the FFmpeg developers
  built with gcc 7.3.0 (crosstool-NG 1.23.0.449-a04d0)
  configuration: --prefix=/home/duanzhicheng/anaconda3/envs/deepface --cc=/home/conda/feedstock_root/build_artifacts/ffmpeg_1566210161358/_build_env/bin/x86_64-conda_cos6-linux-gnu-cc --disable-doc --disable-openssl --enable-avresample --enable-gnutls --enable-gpl --enable-hardcoded-tables --enable-libfreetype --enable-libopenh264 --enable-libx264 --enable-pic --enable-pthreads --enable-shared --enable-static --enable-version3 --enable-zlib --enable-libmp3lame
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/data/duanzhicheng/DeepFaceLab/workspace/39435.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.58.101
  Duration: 00:00:10.03, start: 0.000000, bitrate: 580 kb/s
    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 480x640, 541 kb/s, 24 fps, 24 tbr, 12288 tbn, 96 tbc (default)
    Metadata:
      handler_name    : VideoHandler
    Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 48 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 (native) -> mjpeg (native))
Press [q] to stop, [?] for help

可以看到配置文件变成

--enable-libx264

整个过程正常运行,踩坑完毕。

参考

  • python 安装 ffmpeg包
  • DeepFaceLab小白入门:脸部替换以及合成视频!
  • How to use libx264 ffmpeg in conda environment?

本文分享自微信公众号 - AI科技时讯(aiblog_research),作者:unclell

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 让机器“读懂”放射学报告

    在Qure,我们建立了深度学习模型来检测放射影像中的异常。这些模型需要大量的标记数据来学习诊断异常。因此,我们从医院和门诊放射中心收集了一个大型数据集。这些数据...

    用户3578099
  • leetcode每日一题:283. 移动零

    地址:https://leetcode-cn.com/problems/move-zeroes/

    用户3578099
  • Item2vec: Neural Item Embedding for Collaborative Filtering

    推荐系统中,传统的CF算法都是利用 item2item 关系计算商品间相似性。i2i数据在业界的推荐系统中起着非常重要的作用。传统的i2i的主要计算方法分两类,...

    用户3578099
  • Buffalo Automation获90万美元种子融资,推进无人驾驶船技术

    【数据猿导读】美国初创公司Buffalo Automation正在开发无人驾驶船技术,近日宣布已经获得了90万美元种子融资,超过年初公司定下的70万美元融资目标...

    数据猿
  • pip is configured with locations that require TLS/SSL, however the ssl module in Python is not avail

    # 背景 安装pip后发现执行pip install pytest,提示下面错误 pip is configured with locations that r...

    千往
  • 360被指违反工信部第 20号令 强制手段剥 夺…

    用户1127987
  • 如何安装最新版本的ABAP Development tools

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

    Jerry Wang
  • R|生存分析(1)

    生存分析:研究各个因素与生存时间有无关系以及关联程度大小。可拓展到疾病复发时间,机器的故障时间等。 起始事件:反应研究对象开始生存过程的起始特征事件。 终点事件...

    西游东行
  • PHP7 编译安装

    本文介绍了手动编译安装 PHP 的具体步骤。 修订记录 Debian9 Ubuntu17.04 出现错误请详细查看后边说明(PHP 7.1.9 不会报错了)。出...

    康怀帅
  • Java HashMap的工作原理

    面试的时候经常会遇见诸如:“java中的HashMap是怎么工作的”,“HashMap的get和put内部的工作原理”这样的问题。本文将用一个简单的例子来解释下...

    哲洛不闹

扫码关注云+社区

领取腾讯云代金券