在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
相关产品推荐
相关产品推荐

