facefusion CLI 批量换脸视频文件

就是说用一张脸,替换目标文件夹下的所有视频中的脸。

首先你的 facefusion 要是本地部署的,不是那种一键安装包,后面再说一键安装包怎么搞。

第二就是要在非 windows 环境。(没测试,windows 电脑干这个活太吵,还是 macmini 省心)

进入正题

首先要修改 facefusion.ini

[paths]

temp_path =/Volumes/JBOD/Ff/temp    临时文件路径,就是处理中间产生的文件,这个会非常大,最好是个大的空间。处理完一个后会删除前一个生成的文件。

jobs_path =

source_paths =/Volumes/JBOD/Ff/ref      参考图片的路径

target_path =/Volumes/JBOD/Ff/input      目标视频的路径

output_path =/Volumes/JBOD/Ff/output    输出视频的路径

[face_selector]

face_selector_mode =

face_selector_order =

face_selector_age_start =

face_selector_age_end =

face_selector_gender = female    指定女性

face_selector_race = asian          指定亚洲

reference_face_position =

reference_face_distance = 0.8      识别距离

reference_frame_number =

[execution]

execution_device_id =

execution_providers =

execution_thread_count = 8      线程数

execution_queue_count =

别的有需要的设一下。

然后把参考文件,目标目录和文件,临时目录,输出目录都搞定。

脚本

import os

import subprocess

# 配置路径

source_img = "/Volumes/JBOD/Ff/ref/1.jpeg"# 可修改为你要用的参考图片

input_dir = "/Volumes/JBOD/Ff/input"  #输入目录

output_dir = "/Volumes/JBOD/Ff/output"  #输出目录

# 支持的视频扩展名

video_exts = (".mp4", ".mov", ".avi", ".mkv")

for filename in os.listdir(input_dir):

    if filename.lower().endswith(video_exts):

        input_path = os.path.join(input_dir, filename)

        output_path = os.path.join(output_dir, filename)

        cmd = [

            "python", "facefusion.py", "headless-run",

            "--source-paths", source_img,

            "--target-path", input_path,

            "--output-path", output_path

        ]

        print(" ".join(cmd))

        subprocess.run(cmd)

把这个存为 batch.py 在 facefusion 目录下。就是和 facefusion.ini 一个目录。

然后激活环境

conda activate facefusion

python batch.py 

即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。