在Windows下,moviepy版本为1.0.3,执行视频读写操作,出现了TypeError: must be real number, not NoneType错误,网络上的解决方法都不管用
from moviepy.editor import *
clip = VideoFileClip('demo/demo.mp4')
clip.write_videofile('demo/demo2.mp4',fps=clip.fps)
Traceback (most recent call last):
File "D:\Project\PycharmProjects\mmaction2\tp.py", line 3, in <module>
clip.write_videofile('demo/demo2.mp4',fps=clip.fps)
File "D:\anaconda3\envs\mmlab\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "D:\anaconda3\envs\mmlab\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\decorators.py", line 135, in use_clip_fps_by_default
return f(clip, *new_a, **new_kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\decorators.py", line 22, in convert_masks_to_RGB
return f(clip, *a, **k)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\video\VideoClip.py", line 300, in write_videofile
ffmpeg_write_video(self, filename, fps, codec,
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\video\io\ffmpeg_writer.py", line 212, in ffmpeg_write_video
with FFMPEG_VideoWriter(filename, clip.size, fps, codec = codec,
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\video\io\ffmpeg_writer.py", line 88, in __init__
'-r', '%.02f' % fps,
TypeError: must be real number, not NoneType
Moviepy - Building video demo/demo2.mp4.
Moviepy - Writing video demo/demo2.mp4
问题最开始源于执行下面这段命令,即执行mmaction2项目的demo_spatiotemporal_det.py,发生了同样的错误。
python demo/demo_spatiotemporal_det.py ^
demo/demo.mp4 ^
demo/output_demo.mp4 ^
--config configs/detection/slowonly/slowonly_kinetics400-pretrained-r101_8xb16-8x8x1-20e_ava21-rgb.py ^
--checkpoint checkpoints/slowonly_omnisource_pretrained_r101_8x8x1_20e_ava_rgb_20201217-16378594.pth ^
--det-config demo/demo_configs/faster-rcnn_r50_fpn_2x_coco_infer.py ^
--det-checkpoint checkpoints/faster_rcnn_r50_fpn_2x_coco_bbox_mAP-0.384_20200504_210434-a5d8aa15.pth ^
--det-score-thr 0.9 ^
--action-score-thr 0.5 ^
--label-map tools/data/ava/label_map.txt ^
--predict-stepsize 8 ^
--output-stepsize 4 ^
--output-fps 6
输出结果
Loads checkpoint by local backend from path: checkpoints/faster_rcnn_r50_fpn_2x_coco_bbox_mAP-0.384_20200504_210434-a5d8aa15.pth
Performing Human Detection for each frame
[ ] 0/28, elapsed: 0s, ETA:07/13 16:58:49 - mmengine - WARNING - "FileClient" will be deprecated in future. Please use io functions in https://mmengine.readthedocs.io/en/latest/api/fileio.html#file-io
07/13 16:58:49 - mmengine - WARNING - "HardDiskBackend" is the alias of "LocalBackend" and the former will be deprecated in future.
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>] 28/28, 3.6 task/s, elapsed: 8s, ETA: 0s
Loads checkpoint by local backend from path: checkpoints/slowonly_omnisource_pretrained_r101_8x8x1_20e_ava_rgb_20201217-16378594.pth
Performing SpatioTemporal Action Detection for each clip
[>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ] 27/28, 6.2 task/s, elapsed: 4s, ETA: 0sPerforming visualization
Moviepy - Building video demo/output_demo.mp4.
Moviepy - Writing video demo/output_demo.mp4
Traceback (most recent call last):
File "D:\Project\PycharmProjects\mmaction2\demo\demo_spatiotemporal_det.py", line 375, in <module>
main()
File "D:\Project\PycharmProjects\mmaction2\demo\demo_spatiotemporal_det.py", line 369, in main
vid.write_videofile(args.out_filename)
File "D:\anaconda3\envs\mmlab\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "D:\anaconda3\envs\mmlab\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\decorators.py", line 135, in use_clip_fps_by_default
return f(clip, *new_a, **new_kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\decorators.py", line 22, in convert_masks_to_RGB
return f(clip, *a, **k)
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\video\VideoClip.py", line 300, in write_videofile
ffmpeg_write_video(self, filename, fps, codec,
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\video\io\ffmpeg_writer.py", line 212, in ffmpeg_write_video
with FFMPEG_VideoWriter(filename, clip.size, fps, codec = codec,
File "D:\anaconda3\envs\mmlab\lib\site-packages\moviepy\video\io\ffmpeg_writer.py", line 88, in __init__
'-r', '%.02f' % fps,
TypeError: must be real number, not NoneType