问题描述
import os
import moviepy.video.io.ImageSequenceClip
image_folder= r'C:\Users\Porsche\OneDrive - Imperial College London\Documents\plates'
fps=1
image_files = [image_folder+'/'+img for img in os.listdir(image_folder) if img.endswith(".jpeg")]
clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files,fps=fps)
clip.write_videofile('my_video.mp4')
我是 Python 新手,我似乎看不到索引在哪里,而且我为 moviepy 找到的文档也不清楚。
错误在这一行
clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(image_files,fps=fps)
解决方法
我 5 分钟前刚刚使用 ImageSequenceClip 成功制作了一个小视频,所以也许我可以提供帮助。
以下是与我在您的代码中看到的内容相关的问题以及与我在使用 ImageSequenceClip 时遇到的问题相关的问题。我没有遇到与您提到的类似的索引错误,但这可能是由于您的列表理解行造成的。
一些一般性建议——也许这对您从事的其他项目就足够了或有帮助:
- 小心你的“/”和“\”;保持这些统一,以避免出现任何不需要的问题。我通常在 Windows 文件系统的所有情况下都使用 / 并且它似乎工作正常。此外,当手动组合路径+文件名变量时,不要忘记在路径变量的末尾包含一个最终的“/”。
- 打印并检查您创建的 image_files 变量的长度,以确保您确实添加了您想要的文件,并且您的列表理解行没有其他明显问题。
- 如果您找不到导致索引错误的问题,您可以尝试仅添加包含图像文件的文件夹(而不是单个图像文件位置的列表)。在这种情况下,您可能需要创建一个仅包含您想要包含的文件的新文件夹。
- fps 的论点是违反直觉的,至少对我来说是这样。值越低,视频中单个图像的持续时间越长。
- 最后,您提供给 ImageSequenceClip 函数的目录将根据文件名按字母数字顺序对文件进行排序。请记住这一点,例如,a1、a2、a11 将被重新排序为 a1、a11、a2。