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

导入ffmpeg后moviepy.editor仍报ffmpeg未找到错误的原因

问题描述

编写Python视频处理脚本时,计划先通过pytube库下载目标YouTube视频,再调用moviepy实现视频裁剪、旋转、画中画合成并导出GIF,对应实现代码如下:

#from pytube import YouTube as YT #How to get video.mp4
'''
url = 'https://www.youtube.com/watch?v=JC-EGagoM3k'
vid = YT(url)
Streams = vid.streams

filtered = vid.streams.filter(progressive = True, mime_type = 'video/mp4')
filtered.get_highest_resolution().download(filename = 'Video.mp4')
'''

import ffmpeg
import moviepy
from moviepy.editor import *

clip = (VideoFileClip('Video.mp4').subclip((1,22),(1,23)).rotate(180))
screenshot = clip.crop(x2 = clip.w/2).to_ImageClip(0.2).set_duration(clip.duration)
c = CompositeVideoClip([clip,screenshot])
clip.write_gif('clip.gif')

运行代码后抛出如下报错:
报错截图
核心疑问:代码中已经显式导入了ffmpeg模块,为何moviepy.editor仍会抛出ffmpeg未找到的错误?

错误根因

你代码里import ffmpeg导入的是Python第三方封装库ffmpeg-python,这只是一个Python层的FFmpeg调用包装,并不是moviepy运行依赖的FFmpeg原生可执行程序。
moviepy的所有视频读写、剪辑、编码操作都需要直接调用系统层面的FFmpeg二进制文件,和你有没有装Python的ffmpeg包没有关系。只装Python的ffmpeg库、没有安装原生FFmpeg程序并配置到系统路径时,moviepy自然会报找不到ffmpeg的错误。

解决方案
  • 安装原生FFmpeg程序,根据自己的操作系统选择对应方式:
    • Windows:下载官方编译好的FFmpeg压缩包,解压后将包内bin目录的绝对路径添加到系统PATH环境变量,重启IDE/终端后执行ffmpeg -version,能正常输出版本信息即配置生效
    • Mac:通过Homebrew执行brew install ffmpeg即可自动完成安装配置
    • Debian/Ubuntu系Linux:执行sudo apt update && sudo apt install ffmpeg完成安装
  • 代码中import ffmpeg的语句对moviepy识别FFmpeg没有任何作用,可以直接删除。
  • 如果不想修改系统环境变量,可以在导入moviepy编辑模块前,手动指定FFmpeg可执行文件的路径,示例代码:
from moviepy.config import change_settings
# 替换为你本地ffmpeg可执行文件的完整路径,Windows下注意路径转义
change_settings({"FFMPEG_BINARY": "C:/ffmpeg/bin/ffmpeg.exe"})

# 之后再导入moviepy.editor相关模块
from moviepy.editor import *
  • 额外注意:你现有代码最后导出GIF调用的是原clip对象,不是合成后的画中画对象c,最终导出的GIF不会包含你做的半屏截图层,需要将最后一行改为c.write_gif('clip.gif')才能得到预期的画中画效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 00:48:25