AudioEffectCapture

Наследует: AudioEffect < Resource < RefCounted < Object

Захватывает звук с аудио-шины в режиме реального времени.

Описание

AudioEffectCapture — это AudioEffect, который копирует все аудио-кадры из подключенной шины аудио-эффектов в свой внутренний кольцевой буфер.

Код приложения должен потреблять эти аудио-кадры из этого кольцевого буфера с помощью get_buffer() и обрабатывать их по мере необходимости, например, для захвата данных из AudioStreamMicrophone, реализации эффектов, определяемых приложением, или для передачи звука по сети. При захвате аудиоданных с микрофона формат сэмплов будет стерео PCM 32-бит с плавающей точкой.

В отличие от AudioEffectRecord, этот эффект возвращает только необработанные аудио-сэмплы, а не кодирует их в AudioStream.

Обучающие материалы

Свойства

float

buffer_length

0.1

Методы

bool

can_get_buffer(frames: int) const

void

clear_buffer()

PackedVector2Array

get_buffer(frames: int)

int

get_buffer_length_frames() const

int

get_discarded_frames() const

int

get_frames_available() const

int

get_pushed_frames() const


Описания свойств

float buffer_length = 0.1 🔗

  • void set_buffer_length(value: float)

  • float get_buffer_length()

Длина внутреннего кольцевого буфера в секундах. Установка длины буфера не даст никакого эффекта, если она уже инициализирована.


Описания метода

bool can_get_buffer(frames: int) const 🔗

Возвращает true, если по крайней мере frames аудиокадров доступны для чтения во внутреннем кольцевом буфере.


void clear_buffer() 🔗

Очищает внутренний кольцевой буфер.

Примечание: Вызов этого во время захвата может привести к потере сэмплов, что приведет к хлопкам при воспроизведении.


PackedVector2Array get_buffer(frames: int) 🔗

Получает следующие frames аудиосэмплов из внутреннего кольцевого буфера.

Возвращает PackedVector2Array, содержащий ровно frames аудиосэмплов, если они доступны, или пустой PackedVector2Array, если данных было недостаточно.

Сэмплы представляют собой PCM с плавающей точкой со знаком между -1 и 1. Вам придется масштабировать их, если вы хотите использовать их как 8- или 16-битные целочисленные сэмплы. (v = 0x7fff * samples[0].x)


int get_buffer_length_frames() const 🔗

Возвращает общий размер внутреннего кольцевого буфера в кадрах.


int get_discarded_frames() const 🔗

Возвращает количество аудио-кадров, отброшенных из аудио-шины из-за заполнения буфера.


int get_frames_available() const 🔗

Возвращает количество кадров, доступных для чтения, с помощью get_buffer().


int get_pushed_frames() const 🔗

Возвращает количество аудиокадров, вставленных из аудиошины.