このページでは

QAudioBufferInput Class

QAudioBufferInput クラスは、QMediaCaptureSession を通じて、QMediaRecorder にカスタムオーディオバッファを提供するために使用されます。詳細...

ヘッダー: #include <QAudioBufferInput>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
以下のように: Qt 6.8
継承元: QObject

パブリック関数

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)

シグナル

詳細な説明

QAudioBufferInput は、FFmpeg バックエンドでのみサポートされています。

カスタムオーディオバッファは、QAudioBufferInput とQMediaRecorder をQMediaCaptureSession に接続することで記録できます。プルモードで実装する場合は、readyToSendAudioBuffer()シグナルに応答してsendAudioBuffer()を呼び出します。以下のスニペットでは、このシグナルをカスタムメディアジェネレータクラスのスロットに接続することでこれを実現しています。スロット関数は、新しいオーディオバッファを含む別のシグナルをエミットし、それが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();

以下は、オーディオバッファを提供するスロット関数の最小限の実装例です:

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

詳細については、readyToSendAudioBuffer() およびsendAudioBuffer() を参照してください。

QMediaRecorder およびQMediaCaptureSessionも参照してください 。

メンバ関数のドキュメント

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

parent を使用して、新しいQAudioBufferInputオブジェクトを作成します。

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

オーディオformat およびparent を使用して、新しいQAudioBufferInputオブジェクトを構築します。

指定されたformat は、QMediaRecorder::record()の呼び出し時に、対応するオーディオエンコーダの初期化のためのヒントとして機能します。フォーマットが指定されていないか、無効な場合、最初のオーディオバッファの送信時にオーディオエンコーダが初期化されます。

送信するオーディオバッファの種類が事前に分かっている場合は、フォーマットを指定することをお勧めします。

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

そのオブジェクトを破棄します。

QMediaCaptureSession *QAudioBufferInput::captureSession() const

このオーディオバッファ入力が接続されているキャプチャセッションを返します。オーディオバッファ入力がキャプチャセッションに接続されていない場合は、nullptr を返します。

QMediaCaptureSession::setAudioBufferInput() を使用して、オーディオバッファ入力をセッションに接続します。

QAudioFormat QAudioBufferInput::format() const

オーディオバッファ「input」の生成時に指定されたオーディオ形式を返します。

[signal] void QAudioBufferInput::readyToSendAudioBuffer()

新しいオーディオバッファをオーディオバッファ入力に送信できることを示すシグナルです。このシグナルを受信した後、送信すべきオーディオデータがある場合は、sendAudioBuffer を 1 回、またはループ内で、false が返されるまで呼び出してください。

sendAudioBuffer()も参照してください 。

bool QAudioBufferInput::sendAudioBuffer(const QAudioBuffer &audioBuffer)

QMediaCaptureSession 経由で、QAudioBuffer をQMediaRecorder に送信します。

指定されたaudioBuffer が宛先に正常に送信された場合、true を返します。 バッファが送信されなかった場合、false を返します。これは、インスタンスがQMediaCaptureSession に割り当てられていない場合、セッションにメディアレコーダーがない場合、メディアレコーダーが起動されていない場合、またはそのキューが満杯の場合に発生する可能性があります。宛先が新しいオーディオバッファを処理できるようになるとすぐに、readyToSendAudioBuffer() シグナルが発信されます。

空のオーディオバッファの送信は、QMediaRecorder によって入力ストリームの終了として扱われます。QMediaRecorder は、QMediaRecorder::autoStop がtrue であり、かつすべての入力がストリームの終了を報告した場合、自動的に録音を停止します。

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