You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Deepnote使用MoviePy调用write_videofile时触发TypeError(fps为None)

解决MoviePy中TypeError: must be real number, not NoneType(fps为None)的问题

在Deepnote免费环境下使用MoviePy生成带文字视频时,若触发TypeError: must be real number, not NoneType且报错指向'%.02f' % fps操作,说明流程中fps变量意外变为None,可通过以下步骤排查修复:

1. 修复ImageMagick配置文件的错误修改

你之前执行的sed命令包含多余的重定向符号>,会清空policy.xml文件导致配置损坏,重新执行正确的命令:

!sudo sed -i 's/none/read,write/g' /etc/ImageMagick-6/policy.xml

2. 在Python代码中设置IMAGEMAGICK_BINARY环境变量

shell中的export命令仅对当前shell会话生效,Python进程无法继承该变量,需在代码开头直接设置:

import os
os.environ['IMAGEMAGICK_BINARY'] = '/usr/bin/convert'

3. 给剪辑显式设置fps属性

ColorClip、TextClip等基础剪辑默认没有fps属性,即使在write_videofile中指定fps,CompositeVideoClip仍可能因内部剪辑无fps而导致全局fps为None。给单个剪辑或合成后的剪辑显式设置fps:

from moviepy.editor import *
import os

# 先设置ImageMagick路径
os.environ['IMAGEMAGICK_BINARY'] = '/usr/bin/convert'

# 给每个剪辑设置fps
text_clip = TextClip("Hello world!", fontsize=70, color='white').set_fps(30)
bg_clip = ColorClip(size=(720, 480), color='black').set_fps(30)

# 合成后也可再次确认fps
final_clip = CompositeVideoClip([bg_clip, text_clip]).set_duration(10).set_fps(30)
final_clip.write_videofile("texto.mp4", fps=30)

4. 升级MoviePy至最新版本

旧版本MoviePy可能存在参数传递的bug,执行升级命令修复潜在问题:

!pip install --upgrade moviepy

内容的提问来源于stack exchange,提问作者tavo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 18:32:56