Sat*_*ato 17 python ffmpeg video-processing moviepy
示例代码:
from moviepy.editor import *
clip = VideoFileClip('video.mp4')
clip.write_videofile('video2.mp4', fps=30)
Run Code Online (Sandbox Code Playgroud)
显示以下消息后,表明视频正在构建和写入,
Moviepy - Building video video2.mp4.
Moviepy - Writing video video2.mp4
Run Code Online (Sandbox Code Playgroud)
出现以下错误消息:
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
Run Code Online (Sandbox Code Playgroud)
每当我尝试write_videofile在 moviepy 中执行任何类型的剪辑时,都会发生这种情况。这很奇怪,因为昨天完全相同的代码对我有用,但今天突然不再有用了。有什么建议是什么原因以及如何解决这个问题吗?
Ram*_*ngh 27
尝试升级你的 moviepy 包
pip install moviepy --upgrade
Run Code Online (Sandbox Code Playgroud)
我在 1.0.0 中遇到了同样的问题。升级到 1.0.3 解决了这个问题。
小智 8
我的问题呈现为:
---> 88 '-r', '%.02f' % fps,
89 '-an', '-i', '-'
90 ]
91 if audiofile is not None:
92 cmd.extend([
93 '-i', audiofile,
94 '-acodec', 'copy'
95 ])
TypeError: must be real number, not NoneType
Run Code Online (Sandbox Code Playgroud)
它会保存MP3文件,但写入MP4文件时失败。
我用以下方法解决了这个问题:
pip install ffmpeg --upgrade
Run Code Online (Sandbox Code Playgroud)
1.0.3我在尝试使用 Jupyter 笔记本显示视频剪辑时遇到了同样的问题(即使使用 moviepy 版本) clip.ipython_display。
就我而言,问题是由 moviepy 检测到的 FFmpeg 版本引起的ffmpeg-imageio(无论是什么)。
正如moviepy安装页面上所述,您基本上可以做两件事:
FFMPEG_BINARY。config_defaults.py并将变量设置为二进制文件的位置。在这两种情况下,您都需要重新启动进程/内核才能生效。就我而言,我在config_defaults.py虚拟环境文件夹(在 Linux 上)中找到了以下位置:
<project dir>/.venv/lib/python3.7/site-packages/moviepy/config_defaults.py
Run Code Online (Sandbox Code Playgroud)