You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用ffmpeg-python转换MKV为MP4时报FileNotFoundError错误

报错原因

这个报错是两个问题叠加导致的:

  1. 你通过包管理工具安装的ffmpeg-python只是Python调用FFmpeg的封装库,本身不包含FFmpeg核心的可执行程序ffmpeg.exe,系统找不到可执行文件就会抛出WinError 2。
  2. 脚本的文件遍历逻辑有bug:os.walk会递归遍历目标目录下所有子文件夹,但你拼接文件路径时固定用了根目录start_dir,只要MKV文件存放在子目录中,拼接出的路径就是无效的,同样会触发找不到文件的错误。
修复方案

1. 配置FFmpeg可执行程序

你需要先安装官方的FFmpeg二进制程序,二选一配置即可:

  • 方案一:下载Windows版FFmpeg压缩包,解压后找到bin目录下的ffmpeg.exe,直接放到你的Python脚本所在的文件夹,不需要额外配置。
  • 方案二:把ffmpeg.exe所在的bin目录路径添加到系统环境变量PATH中,重启IDE/终端后生效。

验证方法:新开终端执行ffmpeg -version,能正常输出版本信息就说明配置成功。
如果不想全局配置,也可以后续在代码里直接指定ffmpeg.exe的绝对路径。

2. 修复脚本路径bug

把遍历逻辑里的路径拼接参数从start_dir改成os.walk返回的当前路径path,确保子目录下的文件能被正确找到。
修复后的完整代码如下:

import os
import ffmpeg

start_dir = r'C:\Users\Videos_2'

def convert_to_mp4(mkv_file):
    name, ext = os.path.splitext(mkv_file)
    out_name = name + ".mp4"
    # 若未配置环境变量,可取消下面注释,把路径替换为你本地ffmpeg.exe的绝对路径
    # ffmpeg.input(mkv_file).output(out_name, format='mp4', acodec='aac', ar=16000, audio_bitrate=96000).run(cmd=r'C:\your\path\to\ffmpeg.exe')
    ffmpeg.input(mkv_file).output(out_name, format='mp4', acodec='aac', ar=16000, audio_bitrate=96000).run()
    print("Finished converting {}".format(mkv_file))

for path, folder, files in os.walk(start_dir):
    for file in files:
        if file.endswith('.mkv'):
            print("Found file: %s" % file)
            # 替换start_dir为当前遍历到的path,修复子目录文件路径错误
            convert_to_mp4(os.path.join(path, file))
优化建议

如果不需要重新编码视频流,可以在output参数中添加vcodec='copy',直接拷贝视频流,转换速度会快几十倍,注意该方式要求原MKV内的视频编码兼容MP4容器格式。

内容的提问来源于stack exchange,提问作者Justin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 23:30:52