【问题标题】:MoviePY UTF8 ErrorMoviePY UTF8 错误
【发布时间】:2017-08-04 12:19:34
【问题描述】:

我在发布之前环顾四周,但这里给出的解决方案不起作用:

moviepy stackOF solution

我将 python 2.7.13 与 ImageMagick-7.0.6-Q16 一起使用

我的代码是这样的:

# -*- coding: utf-8 -*-
#Installation de FFMPG.EXE s'il n'est pas déja installé
    try:
        import imageio
        imageio.plugins.ffmpeg.download()
    except Exception as e:
        print e.__doc__
        print e.message
    else:
        print u"FFMPG.EXE déjà installé"

from moviepy.editor import TextClip

txtclip = TextClip('TestText', fontsize=50, color='red')
txt_image = txtclip.get_frame(0)

我得到这个错误:

=== RESTART: C:\Users\wanli\Desktop\Training python\Montage vidéo\Timo.py     ===
FFMPG.EXE déjà installé

[MoviePy] This command returned an error !
Traceback (most recent call last):
File "C:\Users\wanli\Desktop\Training python\Montage vidéo\Timo.py", line 14, in <module>
txtclip = TextClip('TestText', fontsize=50, color='red')
File "C:\Python27\lib\site-packages\moviepy\video\VideoClip.py", line 1220, in __init__
subprocess_call(cmd, verbose=False )
File "C:\Python27\lib\site-packages\moviepy\tools.py", line 50, in subprocess_call
raise IOError(err.decode('utf8'))
File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
return codecs.utf_8_decode(input, errors, True)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xe9 in position 202: invalid continuation byte 

我试图让我的 TextClip 像:

mytext="TestText"
mytext_utf=mytext.encode('utf8')
txtclip = TextClip(mytext_utf, fontsize=50, color='red')

但它不起作用......

我也试过进去

C:\Python27\Lib\site-packages\moviepy\video\VideoClip.py

我去了1173行

if txt is not None:

我在第 1174 行添加:

txt.encode('utf8')

也不行……

我总是收到这个 UTF8 错误!这真让我抓狂 ! :)

感谢您帮助我理解! :)

【问题讨论】:

    标签: python utf-8 encode moviepy


    【解决方案1】:

    好的,我解决了这不是关于我的文本,而是关于我的“.py”文件所在的 PATH....

    "C:\Users\wanli\Desktop\Training python\Montage vidéo\Timo.py"
    

    我改成了:

    "C:\Users\wanli\Desktop\Training python\Montage video\Timo.py"
    

    没有更多错误......

    【讨论】:

      【解决方案2】:

      在moviepy/tools.py中,第49行(至少在当前主分支中是第49行),替换:

      raise IOError(err.decode('utf8'))
      

      raise IOError(err.decode('utf-8', 'replace')
      

      或者简单地说:

      raise IOError(err)
      

      这不会解决根本问题,但至少您应该会收到原始错误消息,即使有些乱码。

      您可能还想在项目的 git 上发布错误报告 - 从任意编码解码本身就是一个错误。

      【讨论】:

        猜你喜欢
        • 2016-01-22
        • 1970-01-01
        • 1970-01-01
        • 2017-06-15
        • 1970-01-01
        • 2012-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多