이 페이지에서

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 에 연결하여 사용자 정의 오디오 버퍼를 녹음할 수 있습니다. 풀(pull) 모드 구현의 경우, 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 를 통해 QMediaRecorder 으로 QAudioBuffer 를 전송합니다.

지정된 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.