Moviepy 无法检测到 ImageMagick?

Moviepy 无法检测到 ImageMagick?

我是 Linux 新手。我按照说明安装了 ImageMagick回答并且成功了。但是当我运行下面的 Python 代码时:

from moviepy.editor import *

clip = VideoFileClip("video.mkv").subclip(50,60)
clip = clip.volumex(0.8)
txt_clip = TextClip("My Holidays 2013", fontsize = 70, color = 'white')
txt_clip = txt_clip.set_pos('center').set_duration(10)
video = CompositeVideoClip([clip, txt_clip])
video.write_videofile("modifiedVideo.mp4")

它仍然给我这样的错误:

[MoviePy] This command returned an error !Traceback (most recent call last):
  File "tst.py", line 5, in <module>
    txt_clip = TextClip("My Holidays 2013", fontsize = 70, color = 'white')
  File "/usr/local/lib/python2.7/dist-packages/moviepy/video/VideoClip.py", line 1145, in __init__
    raise IOError(error)
IOError: MoviePy Error: creation of None failed because of the following error:

convert: not authorized `@/tmp/tmp920Byo.txt' @ error/property.c/InterpretImageProperties/3405.
convert: no images defined `PNG32:/tmp/tmpUoKRUA.png' @ error/convert.c/ConvertImageCommand/3210.
.

.This error can be due to the fact that ImageMagick is not installed on your computer, or (for Windows users) that you didn't specify the path to the ImageMagick binary in file conf.py, or.that the path you specified is incorrect

它说ImageMagick我的电脑上没有安装(我当前的操作系统版本是Ubuntu 16.04 LTS,我的 Python 版本是2.7.12)。有人能帮我吗?谢谢!

答案1

我有同样的问题,我也尝试了 pauljohn32 的两个答案,但没有用。不过,我已经解决了这个问题。

首先,我libmagick++-dev使用 进行安装sudo apt install libmagick++-dev。其次,我遵循Reddit。具体来说,我policy.xml使用命令打开 ImageMagick:sudo vim /etc/ImageMagick-6/policy.xml然后通过将 @ 策略从 更改为 来注释掉<policy domain="path" rights="none" pattern="@*" /><!--<policy domain="path" rights="none" pattern="@*" /> -->

我希望它对你有用

答案2

您可能有 ImageMagic查看器,但您可能缺少 Python 程序所需的 devel 库。

以下是我系统中的软件包列表。您可能需要几个软件包。查看最后,找到 Python 绑定。我怀疑如果您安装它们,它们会带来其他要求。我不知道您需要多少其他头文件,但如果您最终没有使用 libmagick++-dev,我会感到惊讶。

$ dpkg -l | grep magic
ii  file                                              1:5.28-2ubuntu1                               amd64        Determines file type using "magic" numbers
ii  imagemagick                                                 8:6.8.9.9-7ubuntu8.2                          amd64        image manipulation programs -- binaries
ii  imagemagick-6.q16                                           8:6.8.9.9-7ubuntu8.2                          amd64        image manipulation programs -- quantum depth Q16
ii  imagemagick-common                                          8:6.8.9.9-7ubuntu8.2                          all          image manipulation programs -- infrastructure
ii  libgraphicsmagick-q16-3                                     1.3.25-1                                      amd64        format-independent image processing - C shared library
ii  libimage-magick-perl                                        8:6.8.9.9-7ubuntu8.2                          all          Perl interface to the ImageMagick graphics routines
ii  libimage-magick-q16-perl                                    8:6.8.9.9-7ubuntu8.2                          amd64        Perl interface to the ImageMagick graphics routines -- Q16 version
ii  libmagic1:amd64                                             1:5.28-2ubuntu1                               amd64        File type determination library using "magi" numbers
ii  libmagick++-6-headers                                       8:6.8.9.9-7ubuntu8.2                          all          object-oriented C++ interface to ImageMagick - header files
ii  libmagick++-6.q16-5v5:amd64                                 8:6.8.9.9-7ubuntu8.2                          amd64        object-oriented C++ interface to ImageMagick
ii  libmagick++-6.q16-dev:amd64                                 8:6.8.9.9-7ubuntu8.2                          amd64        object-oriented C++ interface to ImageMagick - development files
ii  libmagick++-dev                                             8:6.8.9.9-7ubuntu8.2                          all          object-oriented C++ interface to ImageMagick
ii  libmagickcore-6-arch-config:amd64                           8:6.8.9.9-7ubuntu8.2                          amd64        low-level image manipulation library - architecture header files
ii  libmagickcore-6-headers                                     8:6.8.9.9-7ubuntu8.2                          all          low-level image manipulation library - header files
ii  libmagickcore-6.q16-2:amd64                                 8:6.8.9.9-7ubuntu8.2                          amd64        low-level image manipulation library -- quantum depth Q16
ii  libmagickcore-6.q16-2-extra:amd64                           8:6.8.9.9-7ubuntu8.2                          amd64        low-level image manipulation library - extra codecs (Q16)
ii  libmagickcore-6.q16-dev:amd64                               8:6.8.9.9-7ubuntu8.2                          amd64        low-level image manipulation library - development files (Q16)
ii  libmagickwand-6-headers                                     8:6.8.9.9-7ubuntu8.2                          all          image manipulation library - headers files
ii  libmagickwand-6.q16-2:amd64                                 8:6.8.9.9-7ubuntu8.2                          amd64        image manipulation library
ii  libmagickwand-6.q16-dev:amd64                               8:6.8.9.9-7ubuntu8.2                          amd64        image manipulation library - development files
ii  libvariable-magic-perl                                      0.59-2                                        amd64        module to associate user-defined magic to variables from Perl
ii  python-magic                                                1:5.28-2ubuntu1                               all          File type determination library using "magi" numbers (Python bindings)
ii  python3-magic                                               1:5.28-2ubuntu1                               all          File type determination library using "magi" numbers (Python 3 bindings

我建议新手不要用 apt-get 一个一个手动安装,而是安装程序“synaptic”。它能更好地展示有哪些东西以及你能得到什么。

我现在正在 synaptic 中查找,我发现还有其他几个 imagicmagick<->python 包。查找“python-pythonmagic”或“python-wand”。我发现有很多东西值得探索。

答案3

这是另一个非答案。我理解你的痛苦。我不应该对缺少的 python devel 内容如此自信,这对新用户来说是很常见的事。

Reddit 帖子中讨论了同样的问题:

https://www.reddit.com/r/moviepy/comments/2q4754/need_help_with_installationconfiguration/

这是关于微软 Windows 的

moviepy 页面https://github.com/Zulko/moviepy对 Windows 用户也有同样的建议,但表示 Linux 应该开箱即用。我很有信心地想“我可以为我的新朋友做到这一点...”

我安装了 moviepy 来看看它能做什么。我没有你的视频,我找到了一个小东西“toystory.mp4”用于测试(将副本放在http://pj.freefaculty.org/scraps如果你想尝试的话)。此代码是其主页上的一个示例:https://github.com/Zulko/moviepy

from moviepy.editor import *
video = VideoFileClip("toystory.mp4").subclip(50,60)
# Make the text. Many more options are available.
txt_clip = ( TextClip("Toy",fontsize=70,color='white')
         .set_position('center')
         .set_duration(10) )

result = CompositeVideoClip([video, txt_clip]) # Overlay text on video
result.write_videofile("toy.webm",fps=25)

我得到了和你一样的错误:

>>> txt_clip = ( TextClip("Toy",fontsize=70,color='white')
...              .set_position('center')
...              .set_duration(10) )

[MoviePy] This command returned an error !Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/home/pauljohn/.local/lib/python2.7/site-packages/moviepy/video/VideoClip.py", line 1145, in __init__
 raise IOError(error)

IOError:MoviePy 错误:由于以下错误,创建 None 失败:

convert: not authorized `@/tmp/tmp8uDl3E.txt' @ error/property.c /InterpretImageProperties/3405.
convert: no images defined `PNG32:/tmp/tmprHOK9n.png' @ error/convert.c/ConvertImageCommand/3210.

.This error can be due to the fact that ImageMagick is not installed on
 your computer, or (for Windows users) that you didn't specify the path
 to the ImageMagick binary in file conf.py, or.that the path you
 specified is incorrect

我心想,“也许我需要像 Windows 用户一样修复这个问题”

from moviepy.config import change_settings
change_settings({"IMAGEMAGICK_BINARY": r"/usr/bin/convert"})

那也是同样失败的。

所以我没有答案。

但我有了一个新的猜测。现在我怀疑我们拥有的 ImageMagick 版本的行为方式不符合 moviepy 的预期。这会触发无用的错误消息。

寻求帮助的正确地方是 moviepy。只要您安装了 convert 即可。

$ ls -la /usr/bin/convert
lrwxrwxrwx 1 root root 25 Jun 11  2016 /usr/bin/convert -> /etc/alternatives/convert

$ ls -la /etc/alternatives/convert
lrwxrwxrwx 1 root root 20 Jun 11  2016 /etc/alternatives/convert -> /usr/bin/convert-im6

我有 convert-im6,它由 /usr/bin/convert 指向。如果该版本太新,可能会导致问题。抱歉,这是我能做的最好的。

如果您得到了答案,请不要忘记告诉我们答案。

相关内容