Sur cette page

QAudioBufferInput Class

La classe `QAudioBufferInput` permet de fournir des tampons audio personnalisés à ` QMediaRecorder ` via ` QMediaCaptureSession`. En savoir 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 de : 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 pris en charge qu'avec le backend FFmpeg.

Des tampons audio personnalisés peuvent être enregistrés en connectant un générateur de médias ( QAudioBufferInput ) et un récepteur de médias ( QMediaRecorder ) à un générateur de données ( QMediaCaptureSession). Pour une implémentation en mode « pull », appelez la fonction ` sendAudioBuffer()` en réponse au signal ` readyToSendAudioBuffer()`. Dans l'extrait de code ci-dessous, cela est réalisé en connectant le signal à un slot dans une classe de générateur de médias personnalisée. La fonction de slot émet un autre signal contenant un nouveau tampon audio, qui est connecté à la fonction ` 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 de slot qui fournit des tampons audio :

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

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

Voir également QMediaRecorder et QMediaCaptureSession.

Documentation des fonctions membres

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

Crée un nouvel objet `QAudioBufferInput` avec ` parent`.

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

Crée un nouvel objet `QAudioBufferInput` avec les paramètres audio ` format ` et ` parent`.

L'format spécifié servira d'indication pour l'initialisation de l'encodeur audio correspondant lors de l'appel de la méthode 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 vous 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 un objet ` nullptr ` si l'entrée de tampon audio n'est pas connectée à une session de capture.

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

QAudioFormat QAudioBufferInput::format() const

Renvoie le format audio qui a été spécifié lors de la création du tampon audio d'entrée.

[signal] void QAudioBufferInput::readyToSendAudioBuffer()

Indique qu’un nouveau tampon audio peut être envoyé à l’entrée du tampon audio. Après avoir reçu ce signal, si vous avez des données audio à envoyer, appelez la fonction ` sendAudioBuffer ` une seule fois ou en boucle jusqu’à ce qu’elle renvoie ` false`.

Voir également sendAudioBuffer().

bool QAudioBufferInput::sendAudioBuffer(const QAudioBuffer &audioBuffer)

Envoie QAudioBuffer à QMediaRecorder via QMediaCaptureSession.

Renvoie true si le fichier audioBuffer spécifié a bien été envoyé à la destination. Renvoie false si le tampon n’a pas été envoyé, ce qui peut se produire si l’instance n’est pas affectée à QMediaCaptureSession, si la session ne dispose pas d’un enregistreur multimédia, si l’enregistreur multimédia n’est pas lancé ou si sa file d’attente est pleine. Le signal readyToSendAudioBuffer() sera émis dès que la destination sera en mesure de traiter un nouveau tampon audio.

L’envoi d’un tampon audio vide est interprété par ` QMediaRecorder ` comme la fin du flux d’entrée. ` QMediaRecorder ` arrête automatiquement l’enregistrement 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.