O ImageMagick não pode ser detectado pelo moviepy?

4

Eu sou novo no Linux. Eu instalei o ImageMagick como instrução em responder e funcionou. Mas quando eu corro meu código python como abaixo:

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")

ainda me dá erro assim:

[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

ele diz que ImageMagick não está instalado no meu computador (minha versão atual do sistema operacional é Ubuntu 16.04 LTS , minha versão do python é 2.7.12 ). Alguém me ajuda? THX!

    
por Tony Chen 18.01.2017 / 00:14

3 respostas

7

Eu tenho o mesmo problema e também tento a resposta de pauljohn32 mas não funciona. No entanto, resolvi o problema.

Primeiro de tudo, eu instalo libmagick++-dev usando sudo apt install libmagick++-dev . Em segundo lugar, sigo a sugestão do reddit . Especificamente, abro policy.xml do ImageMagick usando o comando: sudo vim /etc/ImageMagick-6/policy.xml e, em seguida, comento a política @ pela alteração de <policy domain="path" rights="none" pattern="@*" /> para <!--<policy domain="path" rights="none" pattern="@*" /> --> .

Espero que funcione para o seu caso

    
por tndoan 04.02.2017 / 15:48
2

Você pode ter o ImageMagic VIEWER , mas provavelmente não tem a biblioteca de desenvolvimento que seu programa em Python está procurando.

Aqui está a listagem de pacotes do meu sistema. Você provavelmente precisa de vários pacotes. Olhe no final, para as ligações do Python. Eu suspeito que, se você instalá-los, eles trarão os outros requisitos. Eu não sei quantos outros arquivos de cabeçalho você precisa, mas se você não tiver libmagick ++ - dev, eu ficarei surpreso.

$ 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

Em vez de instalar manualmente um por um com o apt-get, eu recomendo o programa de instalação de novatos "synaptic". Ele oferece uma visão muito melhor do que existe e do que você pode obter.

Eu estou procurando no synaptic agora, parece-me que existem vários outros pacotes python imagicmagick < - & gt ;. Procure por "python-pythonmagic" ou "python-wand". Parece-me que há muito para explorar.

    
por pauljohn32 18.01.2017 / 01:30
1

Aqui está uma não resposta diferente. Eu sinto sua dor. Eu não deveria ter ficado tão confiante sobre a falta de material de desenvolvimento de python, isso é o que é normal para novos usuários.

O mesmo problema discutido neste tópico do Reddit:

link

Isso é sobre o MS Windows

A página do filme link tem o mesmo conselho para os usuários do Windows, mas diz que o Linux deve funcionar imediatamente. Eu estava confiante pensando "Eu posso fazer este trabalho para o meu novo amigo ..."

Eu instalei o moviepy para ver o que ele faz. Eu não tinha seu vídeo, encontrei uma pequena coisa "toystory.mp4" para teste (coloque uma cópia no link se você quiser tentar). Este código é um exemplo em sua página inicial: link

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)

Eu recebo o mesmo erro que você:

>>> 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 Error: a criação de None falhou devido ao seguinte erro:

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

Eu pensei comigo mesmo, "talvez eu precise consertar isso como o usuário do Windows"

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

Isso falha da mesma maneira.

Então não tenho resposta.

Mas tenho um novo palpite. Agora eu suspeito que a versão do ImageMagick que temos está se comportando de uma forma que o moviepy não espera. Isso dispara essa mensagem de erro inútil.

O lugar certo para pedir ajuda é no moviepy. Contanto que você tenha convertido instalado.

$ 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

Eu tenho convert-im6, que é apontado por / usr / bin / convert. Se essa versão for muito nova, isso pode causar problemas. Desculpe, é o melhor que posso fazer.

Se você receber uma resposta, não se esqueça de nos informar a resposta.

    
por pauljohn32 18.01.2017 / 23:53