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