Zulko / moviepy

Video editing with Python
https://zulko.github.io/moviepy/
MIT License
12.09k stars 1.51k forks source link

When I use ColorClip and TextClip in MoviePy, I get the "UFuncTypeError" issue #2067

Open JajaRodriguez opened 7 months ago

JajaRodriguez commented 7 months ago

When I want to render a ColorClip element into a video with a TextClip element, I get a very interesting error. There are no problems when I use the TextClip by itself.

Code:

from moviepy.editor import * video = VideoFileClip("intro.mp4") get = video.subclip(0, 10) text_clip = TextClip("Hello World", size = (100,100), color = 'black') text_clip = text_clip.set_duration(9) set = CompositeVideoClip([get,text_clip]) color_clip = ColorClip(size = (100,100), color='gray') color_clip = color_clip.set_opacity(.8) color_clip = color_clip.set_duration(9) set = CompositeVideoClip([get,color_clip,text_clip]) set.write_videofile("moviepy.mp4",codec="libx264")

Output and Error:

runfile('C:/Users/my/.spyder-py3/sor.py', wdir='C:/Users/my/.spyder-py3') Moviepy - Building video moviepy.mp4. MoviePy - Writing audio in moviepyTEMP_MPY_wvf_snd.mp3 MoviePy - Done.
Moviepy - Writing video moviepy.mp4

t: 0%| | 0/300 [00:00<?, ?it/s, now=None]Traceback (most recent call last):

File C:\ProgramData\anaconda3\Lib\site-packages\spyder_kernels\py3compat.py:356 in compat_exec exec(code, globals, locals)

File c:\users\my.spyder-py3\sor.py:17 set.write_videofile("moviepy.mp4",codec="libx264")

File :2 in write_videofile

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\decorators.py:54 in requires_duration return f(clip, *a, **k)

File :2 in write_videofile

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\decorators.py:135 in use_clip_fps_by_default return f(clip, *new_a, **new_kw)

File :2 in write_videofile

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\decorators.py:22 in convert_masks_to_RGB return f(clip, *a, **k)

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\video\VideoClip.py:300 in write_videofile ffmpeg_write_video(self, filename, fps, codec,

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\video\io\ffmpeg_writer.py:220 in ffmpeg_write_video for t,frame in clip.iter_frames(logger=logger, with_times=True,

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\Clip.py:472 in iter_frames frame = self.get_frame(t)

File :2 in get_frame

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\decorators.py:89 in wrapper return f(*new_a, **new_kw)

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\Clip.py:93 in get_frame return self.make_frame(t)

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\video\compositing\CompositeVideoClip.py:111 in make_frame f = c.blit_on(f, t)

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\video\VideoClip.py:564 in blit_on return blit(img, picture, pos, mask=mask, ismask=self.ismask)

File C:\ProgramData\anaconda3\Lib\site-packages\moviepy\video\tools\drawing.py:47 in blit new_im2[yp1:yp2, xp1:xp2] = (1.0 mask blitted + (1.0 - mask) * blit_region)

UFuncTypeError: ufunc 'multiply' did not contain a loop with signature matching types (dtype('float64'), dtype('<U4')) -> None

keikoro commented 4 months ago

Please always include your specs like we ask for in our issue templates – MoviePy version, platform used etc. – and code-format code samples to improve readability, thanks.

joker-11011 commented 1 month ago

In 7th line, change it to -> color_clip = ColorClip(size = (100,100), color=(64,64,64)). Basically, try color in RGB format.