在Python进程地址空间中解码多个视频流

时间:2017-01-16 02:27:26

标签: opencv numpy video nvidia

我正在开发一个需要解码大量视频的项目(比如大约50个,每个都有HD分辨率),并在Python过程中使用原始像素值作为numpy数组。解码应该接近实时(比如4-5 fps)。有效地做到这一点的好方法是什么?我们也可以执行GPU加速解码。目标是同时解码多个视频,以便以后可以通过Python进程处理原始像素值。

1 个答案:

答案 0 :(得分:2)

所以一种方法是使用一些python接口的解码器(无解码 - >管道 - > 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.