Python MoviePy,使用gif作为图像剪辑?
在图像剪辑中使用gif不起作用,这是正常行为吗 代码 错误 堆栈错误Python MoviePy,使用gif作为图像剪辑?,python,ffmpeg,gif,shape,moviepy,Python,Ffmpeg,Gif,Shape,Moviepy,在图像剪辑中使用gif不起作用,这是正常行为吗 代码 错误 堆栈错误 回溯(最近一次呼叫最后一次): 文件“/gif_test.py”,第9行,在 watermaked.write\u videofile('./gif\u output.mp4',fps=30,threads=1) 文件“”,第2行,写入视频文件 文件“/Library/Python/2.7/site-packages/moviepy/decorators.py”,第54行,需要持续时间 返回f(夹子,*a,**k) 文件“
回溯(最近一次呼叫最后一次):
文件“/gif_test.py”,第9行,在
watermaked.write\u videofile('./gif\u output.mp4',fps=30,threads=1)
文件“”,第2行,写入视频文件
文件“/Library/Python/2.7/site-packages/moviepy/decorators.py”,第54行,需要持续时间
返回f(夹子,*a,**k)
文件“”,第2行,写入视频文件
文件“/Library/Python/2.7/site packages/moviepy/decorators.py”,第137行,默认使用
返回f(夹子,*新的a,**新的kw)
文件“”,第2行,写入视频文件
文件“/Library/Python/2.7/site packages/moviepy/decorators.py”,第22行,在convert_masks_to_RGB中
返回f(夹子,*a,**k)
文件“/Library/Python/2.7/site packages/moviepy/video/VideoClip.py”,第349行,在write\u videofile中
进度条=进度条)
文件“/Library/Python/2.7/site packages/moviepy/video/io/ffmpeg_writer.py”,第209行,在ffmpeg_write_视频中
fps=fps,dtype=“uint8”):
文件“/Library/Python/2.7/site packages/tqdm/_-tqdm.py”,第833行,在iter中__
对于iterable中的obj:
文件“/Library/Python/2.7/site packages/moviepy/Clip.py”,第475行,在生成器中
帧=自身。获取帧(t)
文件“”,第2行,在get_框架中
文件“/Library/Python/2.7/site packages/moviepy/decorators.py”,第89行,在包装器中
返回f(*新功率,**新功率)
文件“/Library/Python/2.7/site packages/moviepy/Clip.py”,第95行,在get_框架中
返回自生成帧(t)
文件“/Library/Python/2.7/site packages/moviepy/video/compositing/CompositeVideoClip.py”,第110行,在make_框架中
f=c.blit_on(f,t)
文件“/Library/Python/2.7/site packages/moviepy/video/VideoClip.py”,第611行,blit_on
返回blit(img、picture、pos、mask=mask、ismask=self.ismask)
文件“/Library/Python/2.7/site packages/moviepy/video/tools/drawing.py”,第45行,blit格式
新的\u im2[yp1:yp2,xp1:xp2]=blited
ValueError:无法将输入数组从形状(150150)广播到形状(150150,3)
TL:DR,
Gif被视为video:VideoFileclip(“image.Gif”)而不是ImageClip(“image.Gif”)
工作代码:
#!/usr/bin/env python
from moviepy.editor import *
video = VideoFileClip('./video.mp4')
watermark = (ImageClip("./my.gif")
.set_duration(10))
watermaked = CompositeVideoClip([video, watermark], size=video.size)
watermaked.write_videofile('./gif_output.mp4', fps=30, threads=1)
ValueError: could not broadcast input array from shape (150,150) into shape (150,150,3)
Traceback (most recent call last):
File "./gif_test.py", line 9, in <module>
watermaked.write_videofile('./gif_output.mp4', fps=30, threads=1)
File "<decorator-gen-51>", line 2, in write_videofile
File "/Library/Python/2.7/site-packages/moviepy/decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "<decorator-gen-50>", line 2, in write_videofile
File "/Library/Python/2.7/site-packages/moviepy/decorators.py", line 137, in use_clip_fps_by_default
return f(clip, *new_a, **new_kw)
File "<decorator-gen-49>", line 2, in write_videofile
File "/Library/Python/2.7/site-packages/moviepy/decorators.py", line 22, in convert_masks_to_RGB
return f(clip, *a, **k)
File "/Library/Python/2.7/site-packages/moviepy/video/VideoClip.py", line 349, in write_videofile
progress_bar=progress_bar)
File "/Library/Python/2.7/site-packages/moviepy/video/io/ffmpeg_writer.py", line 209, in ffmpeg_write_video
fps=fps, dtype="uint8"):
File "/Library/Python/2.7/site-packages/tqdm/_tqdm.py", line 833, in __iter__
for obj in iterable:
File "/Library/Python/2.7/site-packages/moviepy/Clip.py", line 475, in generator
frame = self.get_frame(t)
File "<decorator-gen-14>", line 2, in get_frame
File "/Library/Python/2.7/site-packages/moviepy/decorators.py", line 89, in wrapper
return f(*new_a, **new_kw)
File "/Library/Python/2.7/site-packages/moviepy/Clip.py", line 95, in get_frame
return self.make_frame(t)
File "/Library/Python/2.7/site-packages/moviepy/video/compositing/CompositeVideoClip.py", line 110, in make_frame
f = c.blit_on(f, t)
File "/Library/Python/2.7/site-packages/moviepy/video/VideoClip.py", line 611, in blit_on
return blit(img, picture, pos, mask=mask, ismask=self.ismask)
File "/Library/Python/2.7/site-packages/moviepy/video/tools/drawing.py", line 45, in blit
new_im2[yp1:yp2, xp1:xp2] = blitted
ValueError: could not broadcast input array from shape (150,150) into shape (150,150,3)
#!/usr/bin/env python
from moviepy.editor import *
video = VideoFileClip('./video.mp4')
watermark = VideoFileclip("./image.gif")
watermaked = CompositeVideoClip([video, watermark], size=video.size)
watermaked.write_videofile('./gif_output.mp4', fps=30, threads=1)