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) |
シグナル
void | readyToSendAudioBuffer() |
詳細説明
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)
新しい QAudioBufferInput オブジェクトをparent で構築します。
[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()
新しいオーディオバッファをオーディオバッファ入力に送信できることを示すシグナル。このシグナルを受け取った後、送信すべきオーディオ・デートがある場合は、false
を返すまで、sendAudioBuffer を一度だけ、またはループ内で呼び出します。
sendAudioBuffer()も参照のこと 。
bool QAudioBufferInput::sendAudioBuffer(const QAudioBuffer &audioBuffer)
QMediaCaptureSession を通してQMediaRecorder にQAudioBuffer を送る。
指定されたaudioBuffer が宛先に正常に送信された場合、true
を返す。false
これは、インスタンスがQMediaCaptureSession に割り当てられていない場合、セッションがメディアレコー ダーを持っていない場合、メディアレコーダーが起動していない場合、またはそのキューが満杯 の場合に起こり得る。readyToSendAudioBuffer() シグナルは、送信先が新しいオーディオバッファを扱えるようになるとすぐに発せられます。
空のオーディオバッファの送信は、QMediaRecorder によって入力ストリームの終了として扱われる。QMediaRecorder::autoStop がtrue
で、すべての入力がストリームの終了を報告した場合、QMediaRecorder は自動的に録音を停止する。
© 2025 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.