2017-01-16 9 views
-1

Я работаю над проектом, который требует декодирования большого количества видео (скажем ~ 50, каждый с разрешением HD) и использует значения raw pixel как массивы numpy в процессе Python. Декодирование должно быть почти в режиме реального времени (скажем, 4-5 кадров в секунду). Каков хороший способ сделать это эффективно? Мы можем также ускорить декодирование графического процессора. Цель состоит в том, чтобы одновременно декодировать несколько видео, чтобы исходные значения пикселей могли быть обработаны процессом Python.Декодирование нескольких видеопотоков в адресном пространстве процесса Python

ответ

2

Таким образом, один из подходов заключается в использовании некоторого декодера, который сопряжен с использованием метода python (no decode -> pipe -> python-process).

Есть две общие библиотеки попробовать:

Оба используют FFmpeg внутри для декодирования видео (очень эффективно). Для обоих это легко прочитать поток, а затем поместить пиксели в несколько массив numpy.

Я использовал MoviePy один раз чтобы это похоже видел here.

Конденсированного пример (не пробовал):

from moviepy.editor import VideoFileClip 
filepath = "output.avi" 
clip = VideoFileClip(filepath) 

for f in clip.iter_frames(progress_bar=True): 
    np_array_frame = f 

Смотрите также документацию по iter_frames.

Выдержка из документации:

Iterates over all the frames of the clip. 

Returns each frame of the clip as a HxWxN np.array, 
where N=1 for mask clips and N=3 for RGB clips. 

 Смежные вопросы

  • Нет связанных вопросов^_^