cutcutcodec.core.io.scheduler.audio_frames_async

cutcutcodec.core.io.scheduler.audio_frames_async(stream: StreamAudio, rate: Fraction | int, start_time: Fraction, samples: int | None = None, **_) Iterable[FrameAudio][source]

Decode the audio frames in an over thread for performance.

Parameters

streamcutcutcodec.core.classes.stream_audio.StreamAudio

The audio stream for extract the frames.

rateint

The time frequency between each samples to catch.

start_timefraction.Fraction

The frame with start time < start_time are ignored.

samplesint, optional

The maximum number of samples in a frame. The last frame can to contains less samples in order to reach the end. The special default value None means to choose automaticaly the optimal number of samples in accordance to the sample rate. By default, the samples are choose for a duration of 100 ms.

Yields

cutcutcodec.core.classes.frame_audio.FrameAudio

The frame audio such as create the complete signal if we concatenate her.

Examples

>>> from fractions import Fraction
>>> from cutcutcodec.core.filter.audio.subclip import FilterAudioSubclip
>>> from cutcutcodec.core.generation.audio.noise import GeneratorAudioNoise
>>> from cutcutcodec.core.io.scheduler import audio_frames_async
>>>
>>> (stream,) = FilterAudioSubclip(GeneratorAudioNoise(0).out_streams, 0, 1).out_streams
>>> for frame in audio_frames_async(stream, 1000, Fraction(10, 1001), samples=200):
...     frame.time, frame.samples
...
(Fraction(1, 100), 200)
(Fraction(21, 100), 200)
(Fraction(41, 100), 200)
(Fraction(61, 100), 200)
(Fraction(81, 100), 190)
>>>