예제 #1
0
def test_get_frame():
    with toolbox.video_capture(VIDEO_PATH) as cap:
        first = 5
        second = 8

        toolbox.video_jump(cap, first)
        actual = toolbox.get_frame_time(cap, first)
        should = toolbox.get_current_frame_time(cap)

        # should be frame 5
        assert actual == should
        assert actual - 0.16 < 0.01

        # 5 -> 8 -> 5
        frame = toolbox.get_frame(cap, second, True)
        assert frame is not None
        # grab, and recover
        # the next frame will be 5
        # the current frame is 4
        assert toolbox.get_current_frame_id(cap) == first - 1

        # 5 -> 8
        frame = toolbox.get_frame(cap, second)
        assert frame is not None
        assert toolbox.get_current_frame_id(cap) == second

        #
        cur_time = toolbox.get_current_frame_time(cap)
        toolbox.get_frame_time(cap, second, True)
        assert toolbox.get_current_frame_time(cap) == cur_time
예제 #2
0
 def get_frames(self, frame_id_list: typing.List[int], *_,
                **__) -> typing.List[toolbox.VideoFrame]:
     """ return a list of VideoFrame, usually works with pick """
     out = list()
     with toolbox.video_capture(self.video.path) as cap:
         for each_id in frame_id_list:
             timestamp = toolbox.get_frame_time(cap, each_id)
             frame = toolbox.get_frame(cap, each_id)
             out.append(toolbox.VideoFrame(each_id, timestamp, frame))
     return out
예제 #3
0
def test_get_frame():
    with toolbox.video_capture(VIDEO_PATH) as cap:
        first = 5
        second = 8

        actual = toolbox.get_frame_time(cap, first)
        should = toolbox.get_current_frame_time(cap)
        # should be frame 5
        assert actual == should

        # 5 -> 8 -> 5
        frame = toolbox.get_frame(cap, second, True)
        assert frame is not None
        assert toolbox.get_current_frame_id(cap) == first

        # 5 -> 8
        frame = toolbox.get_frame(cap, second)
        assert frame is not None
        assert toolbox.get_current_frame_id(cap) == second

        #
        cur_time = toolbox.get_current_frame_time(cap)
        toolbox.get_frame_time(cap, 10, recover=True)
        assert cur_time == toolbox.get_current_frame_time(cap)