Auf dieser Seite

QAudioBufferInput Class

Die Klasse „QAudioBufferInput“ dient dazu, über „ QMediaCaptureSession “ benutzerdefinierte Audiopuffer für „ QMediaRecorder “ bereitzustellen. Mehr dazu...

Header: #include <QAudioBufferInput>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Seit: Qt 6.8
Erbt von: QObject

Öffentliche Funktionen

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)

Signale

Ausführliche Beschreibung

QAudioBufferInput wird nur mit dem FFmpeg-Backend unterstützt.

Benutzerdefinierte Audio-Puffer können aufgezeichnet werden, indem ein „ QAudioBufferInput “ und ein „ QMediaRecorder “ mit einem „ QMediaCaptureSession “ verbunden werden. Für eine Pull-Mode-Implementierung rufen Sie „ sendAudioBuffer()“ als Reaktion auf das Signal „ readyToSendAudioBuffer()“ auf. Im folgenden Codeausschnitt geschieht dies durch die Verbindung des Signals mit einem Slot in einer benutzerdefinierten Mediengenerator-Klasse. Die Slot-Funktion sendet ein weiteres Signal mit einem neuen Audio-Puffer aus, das mit „ sendAudioBuffer()“ verbunden ist:

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();

Hier ist eine minimale Implementierung der Slot-Funktion, die Audio-Puffer bereitstellt:

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

Weitere Details finden Sie unter readyToSendAudioBuffer() und sendAudioBuffer().

Siehe auch QMediaRecorder und QMediaCaptureSession.

Dokumentation zu Mitgliedsfunktionen

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

Erstellt ein neues QAudioBufferInput-Objekt mit „ parent “.

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

Erstellt ein neues QAudioBufferInput-Objekt mit den Audio- format und parent.

Das angegebene „ format “ dient als Hinweis für die Initialisierung des entsprechenden Audio-Encoders beim Aufruf von „ QMediaRecorder::record()“. Wenn das Format nicht angegeben oder ungültig ist, wird der Audio-Encoder beim Senden des ersten Audio-Puffers initialisiert.

Wir empfehlen, das Format anzugeben, wenn Sie im Voraus wissen, welche Art von Audio-Puffern Sie senden werden.

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

Löscht das Objekt.

QMediaCaptureSession *QAudioBufferInput::captureSession() const

Gibt die Aufnahmesitzung zurück, mit der dieser Audio-Puffereingang verbunden ist, oder einen ` nullptr `, falls der Audio-Puffereingang nicht mit einer Aufnahmesitzung verbunden ist.

Verwenden Sie ` QMediaCaptureSession::setAudioBufferInput()` (), um den Audio-Puffereingang mit einer Sitzung zu verbinden.

QAudioFormat QAudioBufferInput::format() const

Gibt das Audioformat zurück, das bei der Erstellung des Audio-Puffer-Eingangs festgelegt wurde.

[signal] void QAudioBufferInput::readyToSendAudioBuffer()

Signalisiert, dass ein neuer Audiopuffer an den Audiopuffer-Eingang gesendet werden kann. Wenn Sie nach dem Empfang des Signals Audiodaten zum Senden haben, rufen Sie „ sendAudioBuffer “ einmal oder in einer Schleife auf, bis die Funktion „ false “ zurückgibt.

Siehe auch sendAudioBuffer().

bool QAudioBufferInput::sendAudioBuffer(const QAudioBuffer &audioBuffer)

Sendet QAudioBuffer über QMediaCaptureSession an QMediaRecorder.

Gibt „ true “ zurück, wenn die angegebene „ audioBuffer “ erfolgreich an das Ziel gesendet wurde. Gibt ` false` zurück, wenn der Puffer nicht gesendet wurde. Dies kann passieren, wenn die Instanz nicht ` QMediaCaptureSession` zugewiesen ist, die Sitzung keinen Medienrekorder hat, der Medienrekorder nicht gestartet ist oder dessen Warteschlange voll ist. Das Signal ` readyToSendAudioBuffer()` wird ausgegeben, sobald das Ziel einen neuen Audio-Puffer verarbeiten kann.

Das Senden eines leeren Audio-Puffers wird von ` QMediaRecorder ` als Ende des Eingabestroms interpretiert. ` QMediaRecorder ` beendet die Aufnahme automatisch, wenn ` QMediaRecorder::autoStop ` gleich ` true ` ist und alle Eingänge das Ende des Stroms gemeldet haben.

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