我正在构建一个显示视频的PyQt5应用。为了在视频中找到特定的帧,我编写了这个简单的函数。
def seek_frame(self, frame_num: int) -> bool:
if self.is_valid_frame(frame_num):
# self._video_reader is a cv2.VideoCapture object
self._video_reader.set(1, frame_num) # CAP_PROP_POS_FRAMES = 1
self.display_next_frame()
return True
return False
在我看来,这应该在固定的时间内完成,但是我尝试寻找的视频越远,self._video_reader.set(1, frame_num)
的运行时间就越多。找到指定的帧后,self._video_reader.read()
就可以以必要的帧速率运行。
为什么会这样?是否有任何可以加快处理速度的前期处理?