En esta página

QAudioBufferInput Class

La clase QAudioBufferInput se utiliza para proporcionar buffers de audio personalizados a QMediaRecorder a través de QMediaCaptureSession. Más...

Cabecera: #include <QAudioBufferInput>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Desde: Qt 6.8
Hereda: QObject

Funciones Públicas

QAudioBufferInput(QObject *parent = nullptr)
QAudioBufferInput(const QAudioFormat &format, QObject *parent = nullptr)
virtual ~QAudioBufferInput() override
QMediaCaptureSession *captureSession() const
QAudioFormat format() const
bool sendAudioBuffer(const QAudioBuffer &audioBuffer)

Señales

Descripción Detallada

QAudioBufferInput sólo es compatible con el backend FFmpeg.

Se pueden grabar buffers de audio personalizados conectando un QAudioBufferInput y un QMediaRecorder a un QMediaCaptureSession. Para una implementación en modo pull, llama a sendAudioBuffer() en respuesta a la señal readyToSendAudioBuffer(). En el siguiente fragmento, esto se hace conectando la señal a una ranura de una clase generadora de medios personalizada. La función de ranura emite otra señal con un nuevo búfer de audio, que se conecta a sendAudioBuffer():

QMediaCaptureSession session;
QMediaRecorder recorder;
QAudioBufferInput audioInput;

session.setRecorder(&recorder);
session.setAudioBufferInput(&audioInput);

MediaGenerator generator; // Custom class providing audio buffers

connect(&audioInput, &QAudioBufferInput::readyToSendAudioBuffer,
        &generator, &MediaGenerator::nextAudioBuffer);
connect(&generator, &MediaGenerator::audioBufferReady,
        &audioInput, &QAudioBufferInput::sendAudioBuffer);

recorder.record();

Aquí hay una implementación mínima de la función de ranura que proporciona búferes de audio:

void MediaGenerator::nextAudioBuffer()
{
    QAudioBuffer buffer = nextBuffer();
    emit audioBufferReady(buffer);
}

Para más detalles, véase readyToSendAudioBuffer() y sendAudioBuffer().

Véase también QMediaRecorder y QMediaCaptureSession.

Documentación de funciones miembro

[explicit] QAudioBufferInput::QAudioBufferInput(QObject *parent = nullptr)

Construye un nuevo objeto QAudioBufferInput con parent.

[explicit] QAudioBufferInput::QAudioBufferInput(const QAudioFormat &format, QObject *parent = nullptr)

Construye un nuevo objeto QAudioBufferInput con audio format y parent.

El format especificado funcionará como una pista para la inicialización del codificador de audio correspondiente al invocar QMediaRecorder::record(). Si el formato no se especifica o no es válido, el codificador de audio se inicializará al enviar el primer búfer de audio.

Recomendamos especificar el formato si sabes de antemano qué tipo de búferes de audio vas a enviar.

[override virtual noexcept] QAudioBufferInput::~QAudioBufferInput()

Destruye el objeto.

QMediaCaptureSession *QAudioBufferInput::captureSession() const

Devuelve la sesión de captura a la que está conectada esta entrada de búfer de audio, o un nullptr si la entrada de búfer de audio no está conectada a una sesión de captura.

Utilice QMediaCaptureSession::setAudioBufferInput() para conectar la entrada del búfer de audio a una sesión.

QAudioFormat QAudioBufferInput::format() const

Devuelve el formato de audio que se especificó al construir la entrada del búfer de audio.

[signal] void QAudioBufferInput::readyToSendAudioBuffer()

Señala que se puede enviar una nueva fecha de audio a la entrada de la fecha de audio. Después de recibir la señal, si tiene fecha de audio para enviar, invoque sendAudioBuffer una vez o en un bucle hasta que devuelva false.

Véase también sendAudioBuffer().

bool QAudioBufferInput::sendAudioBuffer(const QAudioBuffer &audioBuffer)

Envía QAudioBuffer a QMediaRecorder a través de QMediaCaptureSession.

Devuelve true si el audioBuffer especificado se ha enviado correctamente al destino. Devuelve false, si el búfer no se ha enviado, lo que puede ocurrir si la instancia no está asignada a QMediaCaptureSession, la sesión no tiene grabadora multimedia, la grabadora multimedia no se ha iniciado o su cola está llena. La señal readyToSendAudioBuffer() se emitirá en cuanto el destino pueda gestionar un nuevo búfer de audio.

El envío de un búfer de audio vacío es tratado por QMediaRecorder como un final del flujo de entrada. QMediaRecorder detiene la grabación automáticamente si QMediaRecorder::autoStop es true y todas las entradas han informado del final del flujo.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.