QAudioSource Class

QAudioSource 클래스는 오디오 입력 장치에서 오디오 데이터를 수신하기 위한 인터페이스를 제공합니다. 더 보기...

헤더: #include <QAudioSource>
CMake: find_package(Qt6 REQUIRED COMPONENTS Multimedia)
target_link_libraries(mytarget PRIVATE Qt6::Multimedia)
qmake: QT += multimedia
상속합니다: QObject

공용 함수

QAudioSource(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
QAudioSource(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
virtual ~QAudioSource() override
qsizetype bufferSize() const
qsizetype bytesAvailable() const
qint64 elapsedUSecs() const
QtAudio::Error error() const
QAudioFormat format() const
bool isNull() const
qint64 processedUSecs() const
void reset()
void resume()
void setBufferSize(qsizetype value)
void setVolume(qreal volume)
QIODevice *start()
void start(QIODevice *device)
QtAudio::State state() const
void stop()
void suspend()
qreal volume() const

신호

void stateChanged(QtAudio::State state)

상세 설명

시스템의 기본 오디오 입력 장치로 오디오 입력을 구성할 수 있습니다. 특정 QAudioDevice 을 사용하여 QAudioSource를 만들 수도 있습니다. 오디오 입력을 생성할 때 녹음에 사용할 QAudioFormat 도 함께 보내야 합니다(자세한 내용은 QAudioFormat 클래스 설명 참조).

파일로 녹음하려면

QAudioSource를 사용하면 오디오 입력 장치로 오디오를 녹음할 수 있습니다. 이 클래스의 기본 생성자는 시스템의 기본 오디오 장치를 사용하지만 특정 장치에 대해 QAudioDevice 을 지정할 수도 있습니다. 또한 녹음하려는 QAudioFormat 을 전달해야 합니다.

QAudioSource를 시작하려면 QIODevice 을 열어놓고 start()을 호출하기만 하면 됩니다. 예를 들어 파일에 녹음하려면 다음과 같이 하면 됩니다:

QFile destinationFile; // 클래스 멤버QAudioSource* audio; // 클래스 멤버{ destinationFile.setFileName("/tmp/test.raw"); destinationFile.open( QIODevice::WriteOnly | QIODevice::Truncate );  QAudioFormat format; // 원하는 포맷 설정, 예를 들면:format.setSampleRate(8000); format.setChannelCount(1); format.setSampleFormat(QAudioFormat::UInt8);    QAudioDevice 정보 = QMediaDevices::defaultAudioInput(); if (!info.isFormatSupported(format)) {        qWarning() << "Default format not supported, trying to use the nearest.";
    } audio = new QAudioSource(format, this); connect(audio, &.QAudioSource::stateChanged, this, &AudioInputExample::handleStateChanged);    QTimer::singleShot(3000, this, &AudioInputExample::stopRecording);  audio->start(&destinationFile); // 3000ms 동안 오디오 녹음}

지정한 형식이 입력 장치에서 지원되는 경우 녹음이 시작됩니다( QAudioDevice::isFormatSupported()로 확인할 수 있습니다). 문제가 발생하면 error() 함수를 사용하여 무엇이 잘못되었는지 확인하세요. stopRecording() 슬롯에서 녹음을 중지합니다.

void AudioInputExample::stopRecording()
{
    audio->stop();
    destinationFile.close();
    delete audio;
}

어느 시점에서든 QAudioSource는 활성, 일시 중단, 중지 또는 유휴의 네 가지 상태 중 하나가 됩니다. 이러한 상태는 QtAudio::State 열거형에 의해 지정됩니다. suspend (), resume(), stop(), reset() 및 start()를 통해 직접 상태 변경을 요청할 수 있습니다. 현재 상태는 state()에서 보고되며, QAudioSink 에서도 상태가 변경되면 신호를 보냅니다(stateChanged()).

QAudioSource는 녹음의 start() 이후 경과된 시간을 측정하는 여러 가지 방법을 제공합니다. processedUSecs() 함수는 스트림의 길이를 마이크로초 단위로 반환하며, 오디오 입력이 일시 중단되었거나 유휴 상태였던 시간은 제외합니다. elapsedUSecs () 함수는 start() 호출 이후 경과된 시간을 반환하며, QAudioSource가 어떤 상태에 있었는지에 관계없이 반환합니다.

오류가 발생하면 error()로 오류 이유를 가져올 수 있습니다. 가능한 오류 이유는 QtAudio::Error 열거형에 설명되어 있습니다. 오류가 발생하면 QAudioSource는 StoppedState 에 들어갑니다. stateChanged () 신호에 연결하여 오류를 처리합니다:

void AudioInputExample::handleStateChanged(QAudio::State newState)
{
    switch (newState) {
        case QAudio::StoppedState:
            if (audio->error() != QAudio::NoError) {
                // Error handling
            } else {
                // Finished recording
            }
            break;

        case QAudio::ActiveState:
            // Started recording - read from IO device
            break;

        default:
            // ... other cases as appropriate
            break;
    }
}

QAudioSinkQAudioDevice참조하세요 .

멤버 함수 문서

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

새 오디오 입력을 생성하고 parent 에 연결합니다. 기본 오디오 입력 장치는 출력 format 매개변수와 함께 사용됩니다.

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

새 오디오 입력을 생성하고 parent 에 연결합니다. audioDevice 에서 참조하는 장치는 format 매개변수 입력과 함께 사용됩니다.

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

이 오디오 입력을 삭제합니다.

qsizetype QAudioSource::bufferSize() const

오디오 버퍼 크기를 바이트 단위로 반환합니다.

start() 이전에 호출된 경우 플랫폼 기본값을 반환합니다. start () 이전에 호출되었지만 setBufferSize()이 먼저 호출된 경우 setBufferSize()에서 설정한 값을 반환합니다. start () 이후에 호출된 경우 사용 중인 실제 버퍼 크기를 반환합니다. 이 값은 이전에 setBufferSize()에서 설정한 값과 다를 수 있습니다.

setBufferSize()도 참조하세요 .

qsizetype QAudioSource::bytesAvailable() const

읽을 수 있는 오디오 데이터의 양을 바이트 단위로 반환합니다.

참고: 반환된 값은 QtAudio::ActiveState 또는 QtAudio::IdleState 상태일 때만 유효하며, 그렇지 않으면 0을 반환합니다.

qint64 QAudioSource::elapsedUSecs() const

유휴 및 일시 중단 상태의 시간을 포함하여 start()가 호출된 이후의 마이크로초를 반환합니다.

QtAudio::Error QAudioSource::error() const

오류 상태를 반환합니다.

QAudioFormat QAudioSource::format() const

사용 중인 QAudioFormat 을 반환합니다.

bool QAudioSource::isNull() const

오디오 소스가 null 인 경우 true 을 반환하고, 그렇지 않으면 false 을 반환합니다.

qint64 QAudioSource::processedUSecs() const

start()가 호출된 이후 처리된 오디오 데이터의 양을 마이크로초 단위로 반환합니다.

void QAudioSource::reset()

버퍼의 모든 오디오 데이터를 삭제하고 버퍼를 0으로 초기화합니다.

void QAudioSource::resume()

suspend() 이후 오디오 데이터 처리를 재개합니다.

error()를 QtAudio::NoError 으로 설정합니다. state()를 QtAudio::ActiveState 으로 설정합니다(이전에 start(QIODevice*)를 호출한 경우). 이전에 start()를 호출한 경우 state()를 QtAudio::IdleState 으로 설정합니다. stateChanged() 신호를 내보냅니다.

void QAudioSource::setBufferSize(qsizetype value)

오디오 버퍼 크기를 value 바이트로 설정합니다.

참고: 이 함수는 start() 이전에 언제든지 호출할 수 있으며, start() 이후에는 호출이 무시됩니다. 설정된 버퍼 크기가 실제 사용되는 버퍼 크기라고 가정해서는 안 되며, start() 이후에 언제든지 bufferSize()를 호출하면 사용 중인 실제 버퍼 크기가 반환됩니다.

bufferSize()도 참조하세요 .

void QAudioSource::setVolume(qreal volume)

입력 볼륨을 volume 으로 설정합니다.

볼륨은 0.0 (무음)에서 1.0 (최대 볼륨)까지 선형적으로 조절됩니다. 이 범위를 벗어나는 값은 고정됩니다.

장치가 입력 볼륨 조정을 지원하지 않는 경우 volume 은 무시되고 입력 볼륨은 1.0으로 유지됩니다.

기본 볼륨은 1.0 입니다.

참고: 볼륨을 조정하면 글로벌 볼륨이 아니라 이 오디오 스트림의 볼륨이 변경됩니다.

volume()도 참조하세요 .

QIODevice *QAudioSource::start()

시스템의 오디오 입력에서 데이터를 전송하는 데 사용되는 내부 QIODevice 에 대한 포인터를 반환합니다. 장치가 이미 열려 있고 read()가 이 장치에서 직접 데이터를 읽을 수 있습니다.

참고: 스트림이 중지되거나 다른 스트림을 시작하면 포인터가 유효하지 않게 됩니다.

QAudioSource 가 시스템의 오디오 장치에 액세스할 수 있는 경우 state()는 QtAudio::IdleState, error()는 QtAudio::NoError 를 반환하고 stateChanged() 신호가 방출됩니다.

이 프로세스 중에 문제가 발생하면 error()는 QtAudio::OpenError, state()는 QtAudio::StoppedState 을 반환하고 stateChanged() 신호가 전송됩니다.

QIODevice참조하세요 .

void QAudioSource::start(QIODevice *device)

시스템의 오디오 입력에서 device 로 오디오 데이터 전송을 시작합니다. deviceWriteOnly, Append 또는 ReadWrite 모드에서 열려 있어야 합니다.

QAudioSource 에서 오디오 데이터를 성공적으로 가져올 수 있으면 state()은 QtAudio::ActiveState 또는 QtAudio::IdleState 을 반환하고, error()은 QtAudio::NoError 을 반환하며, stateChanged() 신호가 방출됩니다.

이 과정에서 문제가 발생하면 error()는 QtAudio::OpenError, state()는 QtAudio::StoppedState 을 반환하고 stateChanged() 신호가 전송됩니다.

QIODevice참조하세요 .

QtAudio::State QAudioSource::state() const

오디오 처리 상태를 반환합니다.

[signal] void QAudioSource::stateChanged(QtAudio::State state)

이 신호는 state 장치가 변경되었을 때 방출됩니다.

참고: QtAudio 네임스페이스의 이름은 Qt 6.6까지 QAudio였습니다. 이 신호에 대한 문자열 기반 연결은 QAudio::State 을 매개변수 유형으로 사용해야 합니다: connect(source, SIGNAL(stateChanged(QAudio::State)), ...);

void QAudioSource::stop()

오디오 입력을 중지하고 시스템 리소스에서 분리합니다.

error()를 QtAudio::NoError, state()를 QtAudio::StoppedState 으로 설정하고 stateChanged() 신호를 방출합니다.

void QAudioSource::suspend()

오디오 데이터 처리를 중지하여 버퍼링된 오디오 데이터를 보존합니다.

error()를 QtAudio::NoError, state()를 QtAudio::SuspendedState 으로 설정하고 stateChanged() 신호를 방출합니다.

qreal QAudioSource::volume() const

입력 볼륨을 반환합니다.

장치가 입력 볼륨 조정을 지원하지 않는 경우 반환되는 값은 1.0이 됩니다.

setVolume()도 참조하세요 .

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