QAudioBufferInput Class

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

Header: #include <QAudioBufferInput>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
Since: Qt 6.8
Inherits: 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バックエンドでのみサポートされています。

カスタムオーディオバッファは、QAudioBufferInputQMediaRecorderQMediaCaptureSession に接続することで記録できます。プルモードの実装では、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

オーディオバッファ入力の構築時に指定されたオーディオフォーマットを返します。

[signal] void QAudioBufferInput::readyToSendAudioBuffer()

新しいオーディオバッファをオーディオバッファ入力に送信できることを示します。このシグナルを受け取った後、送信すべきオーディオ・デートがある場合、sendAudioBuffer を一度だけ、またはループ内で、false を返すまで呼び出します。

sendAudioBuffer()も参照のこと

bool QAudioBufferInput::sendAudioBuffer(const QAudioBuffer &audioBuffer)

QAudioBufferQMediaRecorder からQMediaCaptureSession に送る。

指定されたaudioBuffer が宛先に正常に送信された場合、true を返す。falseこれは、インスタンスがQMediaCaptureSession に割り当てられていない場合、セッションにメディア・レコーダーがない場合、メディ ア・レコーダーが起動していない場合、またはキューが一杯の場合に起こり得る。readyToSendAudioBuffer() シグナルは、送信先が新しいオーディオバッファを扱えるようになるとすぐに発せられます。

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

©2024 The Qt Company Ltd. 本書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。