尝试使用moviepy制作视频

问题描述

我的代码有问题。我得到一个列表索引超出范围索引错误

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。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...