Python实现MKV转MP4遇[WinError 2]错误,求解决方案
解决ffmpeg [WinError 2] 文件找不到的问题
核心原因
这个错误是因为系统找不到ffmpeg的可执行文件——不管用ffmpeg-python还是moviepy,底层都依赖ffmpeg二进制程序,必须确保它能被系统或代码定位到。
解决方案
1. 安装并配置系统PATH(推荐)
- 下载Windows版ffmpeg:获取官方完整压缩包(选full_build版本,包含所有必要组件)
- 解压到本地固定目录,比如
D:\ffmpeg - 找到解压后的
bin文件夹路径(如D:\ffmpeg\bin),将其添加到系统环境变量PATH:- 右键「此电脑」→属性→高级系统设置→环境变量→系统变量→找到
PATH→编辑→新建,粘贴上述路径 - 重启你的IDE或命令提示符,让环境变量生效
- 右键「此电脑」→属性→高级系统设置→环境变量→系统变量→找到
2. 代码中直接指定ffmpeg路径(无需修改系统设置)
针对ffmpeg-python库
在导入ffmpeg后添加一行代码,明确指定可执行文件路径:
import ffmpeg # 替换为你的ffmpeg.exe实际路径 ffmpeg.EXECUTABLE = r"D:\ffmpeg\bin\ffmpeg.exe"
针对moviepy库
在导入moviepy前,先通过环境变量指定ffmpeg路径:
import os # 替换为你的ffmpeg.exe实际路径 os.environ["FFMPEG_BINARY"] = r"D:\ffmpeg\bin\ffmpeg.exe" from moviepy.editor import VideoFileClip
3. 优化你的转换代码(可选)
原代码可以只处理.mkv文件,避免无效尝试,还能添加快速转封装选项:
import os import ffmpeg # 若未配置系统PATH,取消下面一行注释并指定路径 # ffmpeg.EXECUTABLE = r"D:\ffmpeg\bin\ffmpeg.exe" downloadFolder = os.path.join('D:', 'abc', 'def', 'downloaded') convertedFolder = os.path.join('D:', 'abc', 'def', 'converted') # 确保转换文件夹存在,不存在则自动创建 os.makedirs(convertedFolder, exist_ok=True) # 统计下载文件夹中的.mkv文件数量 mkv_file_count = 0 for file_name in os.listdir(downloadFolder): if file_name.lower().endswith('.mkv') and os.path.isfile(os.path.join(downloadFolder, file_name)): mkv_file_count += 1 print(f"共发现 {mkv_file_count} 个.mkv文件") # 批量转换.mkv到.mp4 for file_name in os.listdir(downloadFolder): if not file_name.lower().endswith('.mkv'): continue source = os.path.join(downloadFolder, file_name) name, _ = os.path.splitext(file_name) output = os.path.join(convertedFolder, f"{name}.mp4") try: print(f"正在转换: {source}") # 使用codec='copy'直接复制流,速度极快(仅当原编码兼容MP4时可用,否则去掉此参数) ffmpeg.input(source).output(output, codec='copy').run() print(f"转换完成: {output}") except Exception as e: print(f"转换失败 {source}: {str(e)}")
4. 验证配置是否成功
打开命令提示符,输入ffmpeg -version,如果能正常显示ffmpeg版本信息,说明配置生效。
内容的提问来源于stack exchange,提问作者sabari
相关产品推荐
相关产品推荐

