When I run the following code, the error occurs. Can you help me slove it?
# Visualize 2D Skeletons without video
annotations = load('ntu60_2d.pkl')
index = 0
anno = annotations[index]
vid = Vis2DPose(anno, thre=0.2, out_shape=(540, 960), layout='coco', fps=12, video=None)
vid.ipython_display()
100%|████████████████████████████████████████████████████████████████████████████████| 58/58 [00:00<00:00, 3279.58it/s]
fps: 12
Moviepy - Building video __temp__.mp4.
Moviepy - Writing video __temp__.mp4
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Cell In[2], line 6
4 anno = annotations[index]
5 vid = Vis2DPose(anno, thre=0.2, out_shape=(540, 960), layout='coco', fps=12, video=None)
----> 6 vid.ipython_display()
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\video\io\html_tools.py:220, in ipython_display(clip, filetype, maxduration, t, fps, rd_kwargs, center, **html_kwargs)
217 if t is not None:
218 clip = clip.to_ImageClip(t)
--> 220 return HTML2(html_embed(clip, filetype=filetype, maxduration=maxduration,
221 center=center, rd_kwargs=rd_kwargs, **html_kwargs))
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\video\io\html_tools.py:98, in html_embed(clip, filetype, maxduration, rd_kwargs, center, **html_kwargs)
96 kwargs = {'filename':filename, 'verbose':False, 'preset':'ultrafast'}
97 kwargs.update(rd_kwargs)
---> 98 clip.write_videofile(**kwargs)
99 elif isinstance(clip,AudioClip):
100 filename = TEMP_PREFIX+".mp3"
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\decorator.py:232, in decorate.<locals>.fun(*args, **kw)
230 if not kwsyntax:
231 args, kw = fix(args, kw, sig)
--> 232 return caller(func, *(extras + args), **kw)
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\decorators.py:54, in requires_duration(f, clip, *a, **k)
52 raise ValueError("Attribute 'duration' not set")
53 else:
---> 54 return f(clip, *a, **k)
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\decorator.py:232, in decorate.<locals>.fun(*args, **kw)
230 if not kwsyntax:
231 args, kw = fix(args, kw, sig)
--> 232 return caller(func, *(extras + args), **kw)
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\decorators.py:135, in use_clip_fps_by_default(f, clip, *a, **k)
130 new_a = [fun(arg) if (name=='fps') else arg
131 for (arg, name) in zip(a, names)]
132 new_kw = {k: fun(v) if k=='fps' else v
133 for (k,v) in k.items()}
--> 135 return f(clip, *new_a, **new_kw)
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\decorator.py:232, in decorate.<locals>.fun(*args, **kw)
230 if not kwsyntax:
231 args, kw = fix(args, kw, sig)
--> 232 return caller(func, *(extras + args), **kw)
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\decorators.py:22, in convert_masks_to_RGB(f, clip, *a, **k)
20 if clip.ismask:
21 clip = clip.to_RGB()
---> 22 return f(clip, *a, **k)
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\video\VideoClip.py:300, in VideoClip.write_videofile(self, filename, fps, codec, bitrate, audio, audio_fps, preset, audio_nbytes, audio_codec, audio_bitrate, audio_bufsize, temp_audiofile, rewrite_audio, remove_temp, write_logfile, verbose, threads, ffmpeg_params, logger)
292 if make_audio:
293 self.audio.write_audiofile(audiofile, audio_fps,
294 audio_nbytes, audio_bufsize,
295 audio_codec, bitrate=audio_bitrate,
296 write_logfile=write_logfile,
297 verbose=verbose,
298 logger=logger)
--> 300 ffmpeg_write_video(self, filename, fps, codec,
301 bitrate=bitrate,
302 preset=preset,
303 write_logfile=write_logfile,
304 audiofile=audiofile,
305 verbose=verbose, threads=threads,
306 ffmpeg_params=ffmpeg_params,
307 logger=logger)
309 if remove_temp and make_audio:
310 if os.path.exists(audiofile):
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\video\io\ffmpeg_writer.py:213, in ffmpeg_write_video(clip, filename, fps, codec, bitrate, preset, withmask, write_logfile, audiofile, verbose, threads, ffmpeg_params, logger)
211 logfile = None
212 logger(message='Moviepy - Writing video %s\n' % filename)
--> 213 with FFMPEG_VideoWriter(filename, clip.size, fps, codec = codec,
214 preset=preset, bitrate=bitrate, logfile=logfile,
215 audiofile=audiofile, threads=threads,
216 ffmpeg_params=ffmpeg_params) as writer:
218 nframes = int(clip.duration*fps)
220 for t,frame in clip.iter_frames(logger=logger, with_times=True,
221 fps=fps, dtype="uint8"):
File D:\software\program\Anaconda3\envs\pose\lib\site-packages\moviepy\video\io\ffmpeg_writer.py:88, in FFMPEG_VideoWriter.__init__(self, filename, size, fps, codec, audiofile, preset, bitrate, withmask, logfile, threads, ffmpeg_params)
77 self.ext = self.filename.split(".")[-1]
79 # order is important
80 cmd = [
81 get_setting("FFMPEG_BINARY"),
82 '-y',
83 '-loglevel', 'error' if logfile == sp.PIPE else 'info',
84 '-f', 'rawvideo',
85 '-vcodec', 'rawvideo',
86 '-s', '%dx%d' % (size[0], size[1]),
87 '-pix_fmt', 'rgba' if withmask else 'rgb24',
---> 88 '-r', '%.02f' % fps,
89 '-an', '-i', '-'
90 ]
91 if audiofile is not None:
92 cmd.extend([
93 '-i', audiofile,
94 '-acodec', 'copy'
95 ])
TypeError: must be real number, not NoneType
When I run the following code, the error occurs. Can you help me slove it?