本地运行Wav2Lip时subprocess触发FileNotFoundError问题求助
解决Wav2Lip inference.py中subprocess调用ffmpeg的FileNotFound错误
错误[Errno 2] No such file or directory表明subprocess执行命令时找不到目标对象,核心原因集中在FFmpeg配置、文件路径或参数设置上,以下是针对性解决方案:
1. 检查并配置FFmpeg
- 先验证FFmpeg是否可用:打开命令行终端,输入
ffmpeg -version,若提示“找不到命令”,说明未安装或未加入系统环境变量。- 下载对应系统的FFmpeg编译包(Windows直接下载预编译版本),解压后找到
ffmpeg.exe所在的bin目录。 - 将该
bin目录添加到系统PATH环境变量,重启终端后再次执行ffmpeg -version确认正常输出。
- 下载对应系统的FFmpeg编译包(Windows直接下载预编译版本),解压后找到
- 若不想修改环境变量,可直接在代码中指定FFmpeg的绝对路径:
command = [ "C:/your/ffmpeg/path/bin/ffmpeg.exe", # 替换为实际路径 "-y", "-i", args.audio, "-i", args.video, "-c:v", "libx264", "-crf", "22", "-strict", "-2", args.outfile ]
2. 确认输入文件路径有效性
- 检查
args.audio、args.video对应的文件是否存在:比如test/audio.wav和test/video.mp4是否在项目根目录的test文件夹内。 - Windows路径避免单引号/单斜杠转义问题,将main.py中的路径改为正斜杠或双反斜杠:
""" python Wav2Lip/inference.py --checkpoint_path Wav2Lip/checkpoints/wav2lip.pth --face "test/video.mp4" --video "test/video.mp4" --audio "test/audio.wav" --pads 0 20 0 0 """
3. 调整subprocess的shell参数
Windows下shell=False时,subprocess无法直接找到未加入PATH的可执行文件,可统一设置shell=True(跨系统兼容):
subprocess.run(command, shell=True)
4. 验证输出文件路径权限
确保args.outfile指定的路径有写入权限,避免写入系统保护目录(如C盘根目录),建议使用项目内路径(如output/result.mp4),并提前创建对应文件夹。
内容的提问来源于stack exchange,提问作者Armughan Noor
相关产品推荐
相关产品推荐

