我正在使用jupyter笔记本。我也尝试过anaconda控制台。
尝试使用以下两种方式进行导入
from moviepy.editor import VideoFileClip
from moviepy.video.io.VideoFileClip import VideoFileClip
他们两个都给了我同样的错误。全部跟踪在
之下AttributeError Traceback (most recent call last)
<ipython-input-10-9afa9d6e87c4> in <module>()
6 import glob
7 import math
----> 8 from moviepy.editor import VideoFileClip
9 from moviepy.video.io.VideoFileClip import VideoFileClip
C:\Program Files\Anaconda3\lib\site-packages\moviepy\editor.py in <module>()
20 # Clips
21
---> 22 from .video.io.VideoFileClip import VideoFileClip
23 from .video.io.ImageSequenceClip import ImageSequenceClip
24 from .video.io.downloader import download_webfile
C:\Program Files\Anaconda3\lib\site-packages\moviepy\video\io\VideoFileClip.py in <module>()
1 import os
2
----> 3 from moviepy.video.VideoClip import VideoClip
4 from moviepy.audio.io.AudioFileClip import AudioFileClip
5 from moviepy.Clip import Clip
C:\Program Files\Anaconda3\lib\site-packages\moviepy\video\VideoClip.py in <module>()
18
19 import moviepy.audio.io as aio
---> 20 from .io.ffmpeg_writer import ffmpeg_write_image, ffmpeg_write_video
21 from .io.ffmpeg_tools import ffmpeg_merge_video_audio
22 from .io.gif_writers import (write_gif,
C:\Program Files\Anaconda3\lib\site-packages\moviepy\video\io\ffmpeg_writer.py in <module>()
13 DEVNULL = open(os.devnull, 'wb')
14
---> 15 from moviepy.config import get_setting
16 from moviepy.tools import verbose_print
17
C:\Program Files\Anaconda3\lib\site-packages\moviepy\config.py in <module>()
49 success, err = try_cmd([FFMPEG_BINARY])
50 if not success:
---> 51 raise IOError(err.message +
52 "The path specified for the ffmpeg binary might be wrong")
53
AttributeError: 'PermissionError' object has no attribute 'message'
Python版本信息
Python 3.5.2 |Anaconda custom (64-bit)| (default, Jul 5 2016, 11:41:13) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
在控制台中运行ffmpeg -version会给我
ffmpeg version N-83507-g8fa18e0 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 5.4.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-cuda --enable-cuvid --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-nvenc --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-zlib
libavutil 55. 47.100 / 55. 47.100
libavcodec 57. 80.100 / 57. 80.100
libavformat 57. 66.102 / 57. 66.102
libavdevice 57. 2.100 / 57. 2.100
libavfilter 6. 73.100 / 6. 73.100
libswscale 4. 3.101 / 4. 3.101
libswresample 2. 4.100 / 2. 4.100
libpostproc 54. 2.100 / 54. 2.100
我正在运行64位版本的Windows 10。
我无法在任何地方找到任何解决方案,这让我疯狂!好像它没有找到ffmpeg二进制文件,但我把它放在C:\ ffmpeg \ bin中并将其添加到路径环境变量中。遵循here的指示。
答案 0 :(得分:0)
我今晚必须自己解决这个问题。此错误有两个部分:
1&GT;在Python 3中,message
属性不再存在于异常对象上,并且
2 - ;正如你猜测的那样,你需要告诉MoviePy FFMpeg在哪里
要解决err.message
属性错误,您可以将其替换为str(err)
:
raise IOError(str(err) +
"The path specified for the ffmpeg binary might be wrong")
但真正的解决方案是确保MoviePy知道FFMpeg的位置。查看moviepy\config_defaults.py
文件,查看其对FFMPEG_BINARY
的说明。默认值为os.getenv('FFMPEG_BINARY', 'ffmpeg-imageio')
,这意味着它将第一个值视为包含FFMpeg可执行文件路径的环境变量,如果未找到,则使用第二个值。那意味着它应该使用imageio
模块安装的FFMpeg。
由于您已经在计算机上的某处安装了FFMpeg,您只需将config_defaults.py中的FFMPEG_BINARY变量设置为指向它:
FFMPEG_BINARY = "c:\FFMPEG\ffmpeg.exe" # where ever it is on your system
或者您可以使用该值创建环境变量。
如果您还没有安装FFMpeg,可以通过ImageIO安装它,ImageIO是MoviePy使用和安装的模块。在MoviePy install instructions中,他们提到应该由ImageIO自动安装FFMpeg,但这对我来说并非如此。当它导致错误时,它会为您提供手动安装的说明:
imageio.core.fetching.NeedDownloadError: Need ffmpeg exe. You can download it by calling:
imageio.plugins.ffmpeg.download()
这就是我所做的,并且没有必要为此编辑config_defaults.py
。我还没有使用过Anaconda,但我在WinPython这样做,这是另一种Python一体化版本。
我遇到此错误的原因是我错误地输入了config_defaults.py
中ImageMagick的路径,导致&#34;引发&#34;要运行的分支,公开Python 2代码以设置err.message。
希望这个迂回的故事可以帮助你或其他任何人。