MoviePy 2.1.1 在 Python 3.9 中调用 VideoFileClip 报错,如何解决 decode 问题?

新手上路,请多包涵

python 版本 3.9
moviepy 版本 2.1.1
python 使用 moviepy 调用 VideoFileClip 方法读取文件报错:
AttributeError: 'str' object has no attribute 'decode'

代码如下:
image.png

查看了网上的文章很多都说修改 moviepy\video\io\ffmpeg_reader.py 文件将 infos = error.decode(‘utf8’) 改为 infos = error.decode(‘ANSI’) ,也是没有效果,报错截图如下:
image.png

moviepy 降级,将 moviepy 降级到 1.0.3 版本
image.png
image.png
修改 ffmpeg_reader.py 文件
image.png
image.png

阅读 446
2 个回答

在 Python 3 中,字符串默认是 Unicode 编码的,不需要再进行 decode 操作。如果你是从 Python 2 迁移过来的代码,可能会遇到这种情况。
AttributeError 错误,具体是 'str' object has no attribute 'decode'

解决

ffmpeg_reader.py

infos = error.decode("ANSI", errors="ignore")

改为

if isinstance(error, bytes):
    error_message = error.decode("ANSI", errors="ignore")
else:
    error_message = error
新手上路,请多包涵

moviepy 版本 1.0.3
python 版本降级为 3.7
之后可能会报 urllib3 的错误,如:

"urllib3 v2.0 only supports OpenSSL 1.1.1+, currently " ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with 'OpenSSL 1.1.0h  27 Mar 2018'. See: https://github.com/urllib3/urllib3/issues/2168

将 urllib3 版本设置为 1.26.15

之后就可以运行了

代码:

# -*- coding: utf-8 -*-
from moviepy.editor import VideoFileClip
clip = VideoFileClip("a123.mp4")

版本:

python 3.7
moviepy 1.03
urllib3 1.26.15
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏