我使用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之上,可以添加一些有趣的特性吗?
1.* * MoviePy(仅限于适合RAM的视频),但性能呢?
1.* * Imageio**(可能与上述限制相同),但perf怎么办?
1.* * OpenCV**(可能与上述限制相同),但性能如何?
1.其他人?
3条答案
按热度按时间vsmadaxz1#
要获取第一个视频流的帧,请执行以下操作:
kpbwa7wx2#
你可以用Stream.frames属性得到流中的帧数。
图片来源:www.example.comhttp://docs.mikeboers.com/pyav/develop/api/stream.html#av.stream.Stream
qyzbxkaa3#
老问题,但只回答了一部分。让我来回答第二个问题。
问题1:是否可以通过PyAV获得帧数?如果可以,如何获得?
问题2:在这种情况下,我会考虑使用另一个库来逐帧加载和处理视频。哪个库可以让我以最快的速度完成上述操作。我知道以下几个库,但不知道它们的比较结果如何:[...]
也就是说,它高度依赖于工作负载,您应该始终使用特定的设置进行基准测试。实际上,与您处理每帧所花费的时间相比,差异通常可以忽略不计。
下面是一些基准测试代码,供感兴趣的读者参考:
软件包版本: