Количество кадров в видео с использованием PyAV - PullRequest
0 голосов
/ 19 ноября 2018

Я использую библиотеку PyAV, потому что она одна из лучших, доступных в Python.

Вот простой пример кода, который я хотел бы использовать:

import av

video = av.open("My_Super_Video.mp4")

total_frames = # ????

for i, frame in enumerate(video.decode(video=0)):
    img = frame.to_image()  # PIL image

    print("Frame: %d/%d ..." % (i, total_frames))

Я мог бы, очевидно, использовать другие библиотеки для загрузки библиотеки, однако я бы предпочел использовать PyAV, если это возможно, из-за скорости обработки.

Вопрос 1: Можно ли получить количество кадров с помощью PyAV? Если да, то как?

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

  1. PIMS В дополнение к PyAV, можете добавить какую-нибудь интересную функцию?
  2. MoviePy (ограничено видео, которые помещаются в ОЗУ), но как насчет перфорации?
  3. Imageio (возможно, такое же ограничение, как указано выше), но как насчет перфорации?
  4. OpenCV (возможно, такое же ограничение, как указано выше), но как насчет perf?
  5. Другие?

1 Ответ

0 голосов
/ 28 марта 2019

Вы можете получить количество кадров в потоке с помощью атрибута Stream.frames.

Источник: http://docs.mikeboers.com/pyav/develop/api/stream.html#av.stream.Stream

...