Получить количество кадров в клипе с Moviepy

Вы могли бы подумать, что это будет такая простая операция, но в документации нет ничего о том, как получить количество кадров в видеоклипе. Единственный способ, которым я могу думать, это использовать iter_frames() и просто посчитать кадры один за другим, но по какой-то причине перебор 15 кадров видео занимает почти целую секунду, даже если я не выполняю над ними никаких действий.

3 ответа

Решение

Как оказалось, moviepy не сохраняет данные отдельных кадров, поэтому не сохраняет точное количество кадров. Вот лучший способ, который я нашел, чтобы получить приближение:

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

Хорошо. Итак, недавно я наткнулся на проблему, описанную выше. Оказывается, в настоящее время есть способ получить общее количество кадров в клипе, просто открывclip.reader.nframes

В целом код для доступа к количеству кадров будет выглядеть так:

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

Довольно быстро для меня, используя этот код:

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)
Другие вопросы по тегам