Sur cette page

QAudioBufferInput Class

La classe QAudioBufferInput est utilisée pour fournir des tampons audio personnalisés à QMediaRecorder via QMediaCaptureSession. Plus...

En-tête : #include <QAudioBufferInput>
CMake : find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake : QT += multimedia
Depuis : Qt 6.8
Hérite : QObject

Fonctions publiques

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)

Signaux

Description détaillée

QAudioBufferInput n'est supporté qu'avec le backend FFmpeg.

Des tampons audio personnalisés peuvent être enregistrés en connectant un QAudioBufferInput et un QMediaRecorder à un QMediaCaptureSession. Pour une implémentation en mode pull, appelez sendAudioBuffer() en réponse au signal readyToSendAudioBuffer(). Dans l'extrait ci-dessous, cela se fait en connectant le signal à un slot dans une classe de générateur de média personnalisé. La fonction slot émet un autre signal avec un nouveau tampon audio, qui est connecté à 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();

Voici une implémentation minimale de la fonction slot qui fournit des tampons audio :

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

Pour plus de détails, voir readyToSendAudioBuffer() et sendAudioBuffer().

Voir également QMediaRecorder et QMediaCaptureSession.

Documentation sur les fonctions membres

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

Construit un nouvel objet QAudioBufferInput avec parent.

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

Construit un nouvel objet QAudioBufferInput avec les données audio format et parent.

Le format spécifié format servira d'indice pour l'initialisation de l'encodeur audio correspondant lors de l'invocation de QMediaRecorder::record(). Si le format n'est pas spécifié ou n'est pas valide, l'encodeur audio sera initialisé lors de l'envoi du premier tampon audio.

Nous recommandons de spécifier le format si vous savez à l'avance quel type de tampons audio vous allez envoyer.

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

Détruit l'objet.

QMediaCaptureSession *QAudioBufferInput::captureSession() const

Renvoie la session de capture à laquelle cette entrée de tampon audio est connectée, ou une adresse nullptr si l'entrée de tampon audio n'est pas connectée à une session de capture.

Utilisez QMediaCaptureSession::setAudioBufferInput() pour connecter l'entrée du tampon audio à une session.

QAudioFormat QAudioBufferInput::format() const

Renvoie le format audio spécifié lors de la construction de l'entrée du tampon audio.

[signal] void QAudioBufferInput::readyToSendAudioBuffer()

Signale qu'un nouveau tampon audio peut être envoyé à l'entrée du tampon audio. Après avoir reçu le signal, si vous avez des données audio à envoyer, invoquez sendAudioBuffer une fois ou en boucle jusqu'à ce qu'il renvoie false.

Voir également sendAudioBuffer().

bool QAudioBufferInput::sendAudioBuffer(const QAudioBuffer &audioBuffer)

Envoie QAudioBuffer à QMediaRecorder par l'intermédiaire de QMediaCaptureSession.

Renvoie true si l'adresse audioBuffer spécifiée a été envoyée avec succès à la destination. Renvoie false, si le tampon n'a pas été envoyé, ce qui peut se produire si l'instance n'est pas assignée à QMediaCaptureSession, si la session n'a pas d'enregistreur de médias, si l'enregistreur de médias n'est pas démarré ou si sa file d'attente est pleine. Le signal readyToSendAudioBuffer() sera émis dès que la destination sera en mesure de gérer un nouveau tampon audio.

L'envoi d'un tampon audio vide est traité par QMediaRecorder comme une fin de flux d'entrée. QMediaRecorder arrête l'enregistrement automatiquement si QMediaRecorder::autoStop est true et que toutes les entrées ont signalé la fin du flux.

© 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.