moviepy配置ffmpeg路径后调用VideoFileClip报权限错误如何解决
问题复现
- 初始安装依赖执行命令:
pip install moviepy pip install ffmpeg
- 首次执行导入代码触发报错:
from moviepy.editor import *
报错信息:
RuntimeError: No ffmpeg exe could be found. Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.
- 手动添加环境变量配置后导入正常,但加载视频时触发权限错误:
测试代码:
import os os.environ["IMAGEIO_FFMPEG_EXE"] = "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/ffmpeg" from moviepy.editor import * clip = VideoFileClip("master_video.mp4")
核心报错信息:
PermissionError: [Errno 13] Permission denied: '/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/ffmpeg'
问题原因
核心问题很明确:pip install ffmpeg安装的只是Python层的ffmpeg调用封装库,本身不包含ffmpeg可执行二进制文件。你从pip show ffmpeg返回结果里复制的是这个Python包的安装目录路径,不是可以直接运行的ffmpeg程序,系统尝试执行一个目录时自然会抛出权限错误,和文件夹权限设置没关系。
解决方案
两个方案选一个就行,优先选第一个,长期用稳定性最高:
- 方案1:安装系统级ffmpeg(macOS环境推荐)
直接用Homebrew安装官方编译的ffmpeg程序,终端执行:
安装完成后重启Python运行环境,把之前手动写的brew install ffmpegos.environ["IMAGEIO_FFMPEG_EXE"]硬编码配置全删掉,moviepy会自动识别系统路径下的ffmpeg,直接正常导入使用即可。 - 方案2:使用imageio内置的ffmpeg包
不想装Homebrew可以选这个方法,先安装带ffmpeg二进制的依赖包:
之后把之前硬编码路径的配置改成自动获取正确路径的写法,不用自己找路径:pip install imageio-ffmpeg
改完直接运行就不会有权限问题。import os import imageio_ffmpeg os.environ["IMAGEIO_FFMPEG_EXE"] = imageio_ffmpeg.get_ffmpeg_exe() from moviepy.editor import * clip = VideoFileClip("master_video.mp4")
注意
别再手动硬编码site-packages下的ffmpeg目录路径,那个路径指向的是Python包文件夹,不是可执行程序,哪怕给777权限也跑不起来。
内容的提问来源于stack exchange,提问作者Jatin Shekara
相关产品推荐
相关产品推荐

