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)
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)
QMediaCaptureSession 를 통해 QAudioBuffer 를 QMediaRecorder 로 보냅니다.
지정된 audioBuffer 이 대상에 성공적으로 전송된 경우 true
을 반환합니다. 버퍼가 전송되지 않은 경우 false
를 반환하며, 이는 인스턴스가 QMediaCaptureSession 에 할당되지 않았거나 세션에 미디어 레코더가 없거나 미디어 레코더가 시작되지 않았거나 대기열이 꽉 찬 경우에 발생할 수 있습니다. readyToSendAudioBuffer () 신호는 대상에서 새 오디오 버퍼를 처리할 수 있게 되는 즉시 전송됩니다.
빈 오디오 버퍼의 전송은 QMediaRecorder 에서 입력 스트림의 종료로 처리됩니다. QMediaRecorder 은 QMediaRecorder::autoStop 이 true
이고 모든 입력이 스트림의 종료를 보고한 경우 자동으로 녹음을 중지합니다.
© 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.