cutcutcodec.core.io.scheduler.video_frames_async

cutcutcodec.core.io.scheduler.video_frames_async(stream: StreamVideo, out_fps: Fraction, start_time: Fraction, shape: tuple[int, int], **_) Iterable[FrameVideo][source]

Decode the video frames in an over thread for performance.

Parameters

streamcutcutcodec.core.classes.stream_video.StreamVideo

The video stream for extract the frames.

out_fpsFraction

The 1/step interval for each frame timestamp request.

start_timeFraction

The frame with timestamp < start_time are ignored.

shapetuple[int, int]

Transmitted to mocia.core.classes.stream_video.snapshot.

Yields

cutcutcodec.core.classes.frame_video.FrameVideo

The frame videos in monotonic (non strict) order.

Examples

>>> from fractions import Fraction
>>> from cutcutcodec.core.filter.video.subclip import FilterVideoSubclip
>>> from cutcutcodec.core.generation.video.noise import GeneratorVideoNoise
>>> from cutcutcodec.core.io.scheduler import video_frames_async
>>>
>>> (stream,) = FilterVideoSubclip(GeneratorVideoNoise(0).out_streams, 0, 1).out_streams
>>> for frame in video_frames_async(stream, Fraction(10, 1), Fraction(99, 200), shape=(1, 1)):
...     frame.time
...
Fraction(1, 2)
Fraction(3, 5)
Fraction(7, 10)
Fraction(4, 5)
Fraction(9, 10)
>>>