[英]TypeError: must be real number, not NoneType [moviepy, write_videofile]
[英]Getting "TypeError: must be real number, not NoneType" whenever trying to run write_videofile to a clip in moviepy
示例代码:
from moviepy.editor import *
clip = VideoFileClip('video.mp4')
clip.write_videofile('video2.mp4', fps=30)
在显示以下消息后,表明正在构建和编写视频,
Moviepy - Building video video2.mp4.
Moviepy - Writing video video2.mp4
出现以下错误消息:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\decorators.py", line 54, in requires_duration
return f(clip, *a, **k)
File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\decorators.py", line 135, in use_clip_fps_by_default
return f(clip, *new_a, **new_kw)
File "C:\Users\User\Anaconda3\lib\site-packages\decorator.py", line 232, in fun
return caller(func, *(extras + args), **kw)
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\decorators.py", line 22, in convert_masks_to_RGB
return f(clip, *a, **k)
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\video\VideoClip.py", line 300, in write_videofile
ffmpeg_write_video(self, filename, fps, codec,
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\video\io\ffmpeg_writer.py", line 213, in ffmpeg_write_video
with FFMPEG_VideoWriter(filename, clip.size, fps, codec = codec,
File "C:\Users\User\Anaconda3\lib\site-packages\moviepy\video\io\ffmpeg_writer.py", line 88, in __init__
'-r', '%.02f' % fps,
TypeError: must be real number, not NoneType
每当我尝试对write_videofile
中的任何类型的剪辑执行write_videofile时都会发生这种情况。 这很奇怪,因为昨天完全相同的代码对我有用,但今天突然不再适用了。 有什么建议是什么原因以及如何解决这个问题?
第一次安装moviepy后Jupyter Notebook出现这个错误,所以版本已经是1.03了。 在看到@Alex R的回答后,我尝试重新启动 Juptyer Notebook kernel。 只需重新启动 kernel 即可为我修复它。 我没有对环境变量或 config_defaults.py 文件做任何事情。
Windows 10
我有同样的问题,即使是 1.0.3。 就我而言,我通过使用brew reinstall ffmpeg
ffmpeg 在 Homebrew 上brew reinstall ffmpeg
使其工作。
尝试升级您的电影包
pip install moviepy --upgrade
我在 1.0.0 中遇到了同样的问题。 升级到 1.0.3 解决了这个问题。
pip install moviepy --upgrade 花了我很长时间。 最后,这句话解决了问题。
这对我有帮助:ffmpeg_writer.py(我的路径 C:\\Anaconda3\\Lib\\site-packages\\moviepy\\video\\io\\ffmpeg_writer.py),我替换了函数中的参数:def ffmpeg_write_video(clip, filename, fps, codec ="libx264", bitrate=None, ... on: def ffmpeg_write_video(clip, filename, fps, codec="libx264", bitrate=0.0, ...
我在尝试使用clip.ipython_display
在 Jupyter 笔记本中显示视频剪辑时遇到了同样的问题(即使是1.0.3
版的moviepy)。
就我而言,问题是由moviepy检测到的FFmpeg版本引起的,即ffmpeg-imageio
(无论是什么)。
如moviepy的安装页面所述,基本上可以做两件事:
FFMPEG_BINARY
环境变量传递您要使用的 FFmpeg 二进制文件的位置。config_defaults.py
并将变量设置为二进制文件的位置。 在这两种情况下,您都需要重新启动进程/内核才能产生效果。 就我而言,我在我的虚拟 env 文件夹(在 Linux 上)中找到了config_defaults.py
:
<project dir>/.venv/lib/python3.7/site-packages/moviepy/config_defaults.py
在 mac 上遇到了同样的问题。
brew reinstall ffmpeg
为我工作。
试试: fps=final_clip.fps
from moviepy.editor import *
clip = VideoFileClip('video.mp4')
clip.write_videofile('video2.mp4', fps=final_clip.fps)
如果升级你的moviepy package 不适合你
尝试降级装饰器package
pip install --upgrade decorator==4.4.2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.