python - 尝试使用moviepy编写CompositeVideoClip时,如何修复“AttributeError:'NoneType'对象没有属性'stdout'”?
问题描述
我正在使用以下内容:
from moviepy.editor import *
ukulele = VideoFileClip("./clips/513732763.mp4")
txt = TextClip("some text", color='white').set_duration(3)
final = CompositeVideoClip([ukulele,txt])
final.write_videofile("video.mp4",codec="libx264")
我想要做的是在视频文件剪辑上添加文本。使用 VideoFileClip 正常写入是有效的,但是,当使用 CompositeVideoClip 时它不会。但是,使用 Python 3.6.9 运行时,出现以下错误:
Moviepy - Building video video.mp4.
MoviePy - Writing audio in videoTEMP_MPY_wvf_snd.mp3
chunk: 12% 52/447 [00:00<00:00, 518.22it/s, now=None]Traceback (most recent call last):
File "main.py", line 8, in <module>
final.write_videofile("video.mp4",codec="libx264")
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-51>", line 2, in write_videofile
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-50>", line 2, in write_videofile
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 137, in use_clip_fps_by_default
return f(clip, *new_a, **new_kw)
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-49>", line 2, in write_videofile
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 22, in convert_masks_to_RGB
return f(clip, *a, **k)
File "/usr/lib/python3.6/site-packages/moviepy/video/VideoClip.py", line 317, in write_videofile
logger=logger)
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-73>", line 2, in write_audiofile
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "/usr/lib/python3.6/site-packages/moviepy/audio/AudioClip.py", line 209, in write_audiofile
logger=logger)
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-70>", line 2, in ffmpeg_audiowrite
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "/usr/lib/python3.6/site-packages/moviepy/audio/io/ffmpeg_audiowriter.py", line 169, in ffmpeg_audiowrite
logger=logger):
File "/usr/lib/python3.6/site-packages/moviepy/audio/AudioClip.py", line 85, in iter_chunks
fps=fps, buffersize=chunksize)
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-72>", line 2, in to_soundarray
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "/usr/lib/python3.6/site-packages/moviepy/audio/AudioClip.py", line 126, in to_soundarray
snd_array = self.get_frame(tt)
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-10>", line 2, in get_frame
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 89, in wrapper
return f(*new_a, **new_kw)
File "/usr/lib/python3.6/site-packages/moviepy/Clip.py", line 95, in get_frame
return self.make_frame(t)
File "/usr/lib/python3.6/site-packages/moviepy/audio/AudioClip.py", line 296, in make_frame
for c, part in zip(self.clips, played_parts)
File "/usr/lib/python3.6/site-packages/moviepy/audio/AudioClip.py", line 297, in <listcomp>
if (part is not False)]
File "</usr/lib/python3.6/site-packages/decorator.py:decorator-gen-10>", line 2, in get_frame
File "/usr/lib/python3.6/site-packages/moviepy/decorators.py", line 89, in wrapper
return f(*new_a, **new_kw)
File "/usr/lib/python3.6/site-packages/moviepy/Clip.py", line 95, in get_frame
return self.make_frame(t)
File "/usr/lib/python3.6/site-packages/moviepy/audio/io/AudioFileClip.py", line 78, in <lambda>
self.make_frame = lambda t: self.reader.get_frame(t)
File "/usr/lib/python3.6/site-packages/moviepy/audio/io/readers.py", line 184, in get_frame
self.buffer_around(fr_max)
File "/usr/lib/python3.6/site-packages/moviepy/audio/io/readers.py", line 238, in buffer_around
array = self.read_chunk(chunksize)
File "/usr/lib/python3.6/site-packages/moviepy/audio/io/readers.py", line 112, in read_chunk
s = self.proc.stdout.read(L)
AttributeError: 'NoneType' object has no attribute 'stdout'
除了编写 CompositeVideoClip 之外,一切都是正确的并且工作正常。我将如何解决这个问题?
解决方案
这是 moveipy 1.0.1 的一个已知问题,这里有一个开放的 github 问题https://github.com/Zulko/moviepy/issues/938
目前,最好的做法似乎是恢复到 1.0.0 版本,它帮助了该线程上的一些人,也帮助了我自己。您可以使用pip install moviepy==1.0.0
(注意双“=”)执行此操作
推荐阅读
- google-sheets-api - google-api-ruby-client:批量更新电子表格值
- java - Selenium,带有 PageFactory 的 Java 陈旧元素引用
- audio - 从 Flac 到 Ogg 的 ffmpeg 转换会产生损坏的文件
- python - 二叉搜索树删除 Python
- javascript - 用于非前端项目的 Webpack 联合模块
- matlab - 在 Matlab 中实现电气网络的光学解决方案
- reactjs - 是否可以创建不自动连接的 SockJS 客户端?
- model - R 中逻辑回归中 Rockr 中的预测函数
- html - 如何更改此博客的部分宽度(大小)?
- javascript - 通过脚本操作 HTML5 视频控件