cutcutcodec.core.compilation.export.rate

Allow to suggest an appropriate rate.

Functions

available_audio_rates(encoders)

Search the different sampling frequencies available by this encoder.

suggest_audio_rate(stream[, choices])

Return the best compatible audio samplerate.

suggest_video_rate(stream)

Return the best compatible video framerate.

Details

cutcutcodec.core.compilation.export.rate.available_audio_rates(encoders: Iterable[str]) None | set[int][source]

Search the different sampling frequencies available by this encoder.

Parameters

encoderslist[str]

The encoder name.

Returns

ratesset[int] or None

The set of the available rates. The value None means their is no constraints. An empty set means there is not availaible or common rates.

Examples

>>> from cutcutcodec.core.compilation.export.rate import available_audio_rates
>>> available_audio_rates([])
set()
>>> sorted(available_audio_rates(["libmp3lame"]))
[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000]
>>> sorted(available_audio_rates(["libopus"]))
[8000, 12000, 16000, 24000, 48000]
>>> print(available_audio_rates(["flac"]))
None
>>> sorted(available_audio_rates(["libmp3lame", "libopus"]))
[8000, 11025, 12000, 16000, 22050, 24000, 32000, 44100, 48000]
>>>
cutcutcodec.core.compilation.export.rate.suggest_audio_rate(stream: StreamAudio, choices: Iterable[int] | None = None) int[source]

Return the best compatible audio samplerate.

Parameters

streamcutcutcodec.core.classes.stream_audio.StreamAudio

The stream that we want to encode.

choicesset[int], optional

The possible rates. If provide, returns the most appropriate rate of this set. The value None means all rates are allowed. This selection could be generated from cutcutcodec.core.compilation.export.rate.available_audio_rates.

Returns

rateint

A suitable sampling rate compatible with the specified options.

Examples

>>> from cutcutcodec.core.compilation.export.rate import suggest_audio_rate
>>> from cutcutcodec.core.io.read_ffmpeg import ContainerInputFFMPEG
>>> from cutcutcodec.utils import get_project_root
>>> audio = get_project_root().parent / "media" / "audio" / "narration_5_1.oga"
>>> (stream,) = ContainerInputFFMPEG(audio).out_streams
>>> suggest_audio_rate(stream)  # no constraint
16000
>>> suggest_audio_rate(stream, [8000, 12000, 24000, 48000])  # constraint
24000
>>>
cutcutcodec.core.compilation.export.rate.suggest_video_rate(stream: StreamVideo) Fraction[source]

Return the best compatible video framerate.

Parameters

streamcutcutcodec.core.classes.stream_video.StreamVideo

The stream that we want to encode.

Returns

rateFraction

An optimal frame rate.

Examples

>>> from cutcutcodec.core.compilation.export.rate import suggest_video_rate
>>> from cutcutcodec.core.io.read_ffmpeg import ContainerInputFFMPEG
>>> from cutcutcodec.utils import get_project_root
>>> video = get_project_root().parent / "media" / "video" / "intro.webm"
>>> stream = ContainerInputFFMPEG(video).out_select("video")[0]
>>> suggest_video_rate(stream)
Fraction(30000, 1001)
>>>