示例代码:
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
每当我尝试在moviepy中对任何类型的剪辑执行write_videofile
时,都会发生这种情况。这很奇怪,因为昨天完全相同的代码对我来说是有效的,但今天突然不再有效。有什么建议是什么原因和如何解决这个问题?
发布于 2021-07-05 16:33:44
试着升级你的电影包
pip install moviepy --upgrade
我在1.0.0版本中也遇到了同样的问题。升级到1.0.3修复了这个问题。
发布于 2021-09-07 05:33:09
我也遇到了同样的问题,即使是1.0.3。在我的例子中,我是通过在带有brew reinstall ffmpeg
的Homebrew上重新安装ffmpeg来让它工作的。
发布于 2021-11-20 04:52:42
当我尝试使用clip.ipython_display
在Jupyter笔记本中显示视频剪辑时,我也遇到了同样的问题(即使是moviepy的1.0.3
版本)。
在我的例子中,问题是moviepy检测到的FFmpeg版本是ffmpeg-imageio
(不管是什么)。
正如moviepy的installation page所描述的,你基本上可以做两件事:
FFMPEG_BINARY
环境变量传递要使用的FFmpeg二进制文件的位置。config_defaults.py
并将该变量设置为二进制文件的位置。在这两种情况下,您都需要重新启动进程/内核才能产生效果。在我的例子中,我在我的虚拟环境文件夹(在Linux上)中找到了config_defaults.py
:
<project dir>/.venv/lib/python3.7/site-packages/moviepy/config_defaults.py
https://stackoverflow.com/questions/68032884
复制相似问题