使用 Moviepy 获取剪辑中的帧数

Get number of frames in clip with Moviepy

你会认为这是一个如此简单的操作,但是文档中没有任何关于如何获取视频剪辑中的帧数的内容。我能想到的唯一方法是使用 iter_frames() 并逐帧计算帧数,但由于某种原因,即使我没有表演,也几乎需要整整一秒来遍历 15 帧视频对他们采取任何行动。

事实证明,moviepy 不保存单个帧数据,因此它不存储确切的帧数。这是我找到的获得近似值的最佳方法:

frames = int(clip.fps * clip.duration)

使用这段代码对我来说相当快:

clip = VideoFileClip('test.mp4')
n_frames = sum(1 for x in clip.iter_frames())
print n_frames

这可能会快一点。

clip = VideoFileClip('video.mp4')
num_frames = len(list(clip.iter_frames()))
print(num_frames)

好的所以我最近偶然发现了上述问题。 事实证明,目前有一种方法可以通过简单地访问 clip.reader.nframes

来获取剪辑中的总帧数

总的来说,访问帧数的代码如下所示:

clip = VideoFileClip('video.mp4')
n_frames = clip.reader.nframes