Li Yuexi 2023-07-13 17:07 采纳率: 100%
浏览 170
已结题

使用moviepy时发生TypeError: must be real number, not NoneType

在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

  • 写回答

8条回答 默认 最新

  • 智达教育‍ Java领域优质创作者 2023-07-13 18:41
    关注

    当函数或方法期望实数(浮点数)作为参数,但却收到 None 值时,moviepy 中通常会出现错误消息“TypeError:必须是实数,而不是 NoneType”。要解决此问题,您可以尝试以下步骤:

    1. 检查参数是否缺失或不正确:检查发生错误的代码,并确保正确提供 moviepy 函数或方法所需的所有参数。确保没有任何参数设置为 None。
    2. 验证输入文件或数据:如果在读取或处理视频文件或数据时发生错误,请确保文件或数据可访问且格式正确。检查文件路径是否正确,文件没有损坏。
    3. 更新moviepy版本:确保您使用的是最新版本的moviepy。您可以通过在命令提示符或终端中运行“pip install --upgrade moviepy”来更新它。
    4. 检查依赖项:验证 moviepy 所需的所有依赖项均已安装且是最新的。一些依赖项包括 numpy、imageio 和 imageio-ffmpeg。
    5. 调试代码:如果问题仍然存在,请尝试通过添加打印语句或使用调试器来跟踪错误来调试代码。这可以帮助识别导致问题的特定代码行,并提供更多信息以进行故障排除。
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

问题事件

  • 系统已结题 7月22日
  • 已采纳回答 7月14日
  • 修改了问题 7月13日
  • 创建了问题 7月13日

悬赏问题

  • ¥15 非科班怎么跑代码?如何导数据和调参
  • ¥15 福州市的全人群死因监测点死亡原因报表
  • ¥15 Altair EDEM中生成一个颗粒,并且各个方向没有初始速度
  • ¥15 系统2008r2 装机配置推荐一下
  • ¥500 服务器搭建cisco AnyConnect vpn
  • ¥15 悬赏Python-playwright部署在centos7上
  • ¥15 psoc creator软件有没有人能远程安装啊
  • ¥15 快速扫描算法求解Eikonal方程咨询
  • ¥15 校内二手商品转让网站
  • ¥20 高德地图聚合图层MarkerCluster聚合多个点,但是ClusterData只有其中部分数据,原因应该是有经纬度重合的地方点,现在我想让ClusterData显示所有点的信息,如何实现?