QAudioSink Class
QAudioSink 클래스는 오디오 데이터를 오디오 출력 장치로 전송하기 위한 인터페이스를 제공합니다. 더 보기...
헤더: | #include <QAudioSink> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Multimedia) target_link_libraries(mytarget PRIVATE Qt6::Multimedia) |
qmake: | QT += multimedia |
상속합니다: | QObject |
공용 함수
QAudioSink(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr) | |
QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr) | |
virtual | ~QAudioSink() override |
qsizetype | bufferSize() const |
qsizetype | bytesFree() 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 으로 QAudioSink를 생성할 수도 있습니다. 오디오 출력을 생성할 때 재생에 사용할 QAudioFormat 도 함께 보내야 합니다(자세한 내용은 QAudioFormat 클래스 설명 참조).
파일을 재생하려면
오디오 스트림 재생을 시작하려면 QIODevice 으로 start()를 호출하기만 하면 됩니다. 그러면 QAudioSink가 io 장치에서 필요한 데이터를 가져옵니다. 따라서 오디오 파일을 재생하는 것은 매우 간단합니다:
QFile sourceFile; // 클래스 멤버.QAudioSink* audio; // 클래스 멤버.{ sourceFile.setFileName("/tmp/test.raw"); sourceFile.open(QIODevice::읽기 전용); QAudioFormat format; // 포맷 설정, 예: format.setSampleRate(8000); format.setChannelCount(1); format.setSampleFormat(QAudioFormat::UInt8); QAudioDevice 정보(QMediaDevices::defaultAudioOutput()); if (!info.isFormatSupported(format)) { qWarning() << "Raw audio format not supported by backend, cannot play audio."; return; } audio = new QAudioSink(format, this); connect(audio, QAudioSink::stateChanged, this, &AudioInputExample::handleStateChanged); audio->start(&sourceFile); }
오디오 시스템과 출력 장치가 지원한다고 가정하면 파일 재생이 시작됩니다. 문제가 발생하면 error() 함수를 사용해 확인하세요.
파일 재생이 끝나면 장치를 중지해야 합니다:
void AudioOutputExample::stopAudioOutput() { audio->stop(); sourceFile.close(); delete audio; }
언제든지 QAudioSink는 활성, 일시 중단, 중지 또는 유휴의 네 가지 상태 중 하나가 됩니다. 이러한 상태는 QtAudio::State 열거형에 의해 설명됩니다. 상태 변경은 stateChanged() 신호를 통해 보고됩니다. 예를 들어 이 신호를 사용하여 애플리케이션의 GUI를 업데이트할 수 있으며, 여기서는 play/pause
버튼의 상태를 변경하는 것이 일반적인 예입니다. suspend (), stop(), reset(), resume(), start()로 직접 상태 변경을 요청할 수 있습니다.
오류가 발생하면 error() 함수를 사용하여 error type 를 가져올 수 있습니다. 보고될 수 있는 오류에 대한 설명은 QtAudio::Error 열거형을 참조하세요. QtAudio::UnderrunError 오류가 발생하면 QtAudio::IdleState, 다른 오류가 발생하면 QtAudio::StoppedState 로 상태가 변경됩니다. stateChanged() 신호에 연결하여 오류를 확인할 수 있습니다:
void AudioOutputExample::handleStateChanged(QAudio::State newState) { switch (newState) { case QAudio::IdleState: // Finished playing (no more data) AudioOutputExample::stopAudioOutput(); break; case QAudio::StoppedState: // Stopped for other reasons if (audio->error() != QAudio::NoError) { // Error handling } break; default: // ... other cases as appropriate break; } }
QAudioSource 및 QAudioDevice 을참조하세요 .
멤버 함수 문서
[explicit]
QAudioSink::QAudioSink(const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
새 오디오 출력을 생성하고 parent 에 첨부합니다. 기본 오디오 출력 장치는 출력 format 매개변수와 함께 사용됩니다.
[explicit]
QAudioSink::QAudioSink(const QAudioDevice &audioDevice, const QAudioFormat &format = QAudioFormat(), QObject *parent = nullptr)
새 오디오 출력을 구성하고 parent 에 첨부합니다. audioDevice 에서 참조하는 장치는 출력 format 매개변수와 함께 사용됩니다.
[override virtual noexcept]
QAudioSink::~QAudioSink()
이 오디오 출력을 삭제합니다.
이렇게 하면 사용된 모든 시스템 리소스가 해제되고 버퍼가 해제됩니다.
qsizetype QAudioSink::bufferSize() const
오디오 버퍼 크기를 바이트 단위로 반환합니다.
start() 이전에 호출된 경우 플랫폼 기본값을 반환합니다. start () 이전에 호출되었지만 setBufferSize()이 먼저 호출된 경우 setBufferSize()에서 설정한 값을 반환합니다. start () 이후에 호출된 경우 사용 중인 실제 버퍼 크기를 반환합니다. 이 값은 이전에 setBufferSize()에서 설정한 값과 다를 수 있습니다.
setBufferSize()도 참조하세요 .
qsizetype QAudioSink::bytesFree() const
오디오 버퍼에서 사용 가능한 여유 바이트 수를 반환합니다.
참고: 반환된 값은 QtAudio::ActiveState 또는 QtAudio::IdleState 상태일 때만 유효하며, 그렇지 않으면 0을 반환합니다.
qint64 QAudioSink::elapsedUSecs() const
유휴 및 일시 중단 상태의 시간을 포함하여 start()가 호출된 이후의 마이크로초를 반환합니다.
QtAudio::Error QAudioSink::error() const
오류 상태를 반환합니다.
QAudioFormat QAudioSink::format() const
사용 중인 QAudioFormat 을 반환합니다.
bool QAudioSink::isNull() const
QAudioSink 인스턴스가 null
인 경우 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
qint64 QAudioSink::processedUSecs() const
start()가 호출된 이후 처리된 오디오 데이터의 양(마이크로초 단위)을 반환합니다.
void QAudioSink::reset()
오디오 출력을 즉시 중단하고 현재 버퍼에 있는 모든 오디오 데이터를 삭제합니다. QIODevice 으로 푸시된 모든 보류 중인 오디오 데이터는 무시됩니다.
stop()도 참조하세요 .
void QAudioSink::resume()
suspend() 이후 오디오 데이터 처리를 재개합니다.
state()를 suspend()가 호출되었을 때 싱크의 상태로 설정하고 error()를 QAudioError::NoError로 설정합니다. 오디오 싱크의 상태가 QtAudio::SuspendedState 이 아닌 경우 이 함수는 아무 작업도 수행하지 않습니다.
void QAudioSink::setBufferSize(qsizetype value)
오디오 버퍼 크기를 value (바이트)로 설정합니다.
참고: 이 함수는 start() 앞에 언제든지 호출할 수 있습니다. start () 이후에는 이 함수에 대한 호출이 무시됩니다. 설정된 버퍼 크기가 실제 사용되는 버퍼 크기라고 가정해서는 안 되며, start() 이후에 언제든지 bufferSize()를 호출하여 사용 중인 실제 버퍼 크기를 반환해야 합니다.
bufferSize()도 참조하세요 .
void QAudioSink::setVolume(qreal volume)
출력 볼륨을 volume 으로 설정합니다.
볼륨은 0.0
(무음)에서 1.0
(최대 볼륨)까지 선형적으로 조절됩니다. 이 범위를 벗어나는 값은 클램핑됩니다.
기본 볼륨은 1.0
입니다.
참고: 볼륨을 조정하면 글로벌 볼륨이 아니라 이 오디오 스트림의 볼륨이 변경됩니다.
UI 볼륨 컨트롤은 일반적으로 비선형적으로 조절해야 합니다. 예를 들어 로그 스케일을 사용하면 사용자가 일반적으로 볼륨 컨트롤에서 기대할 수 있는 선형적인 음량 변화가 발생합니다. 자세한 내용은 QtAudio::convertVolume()를 참조하세요.
volume()도 참조하세요 .
QIODevice *QAudioSink::start()
시스템의 오디오 출력으로 데이터를 전송하는 데 사용되는 내부 QIODevice 에 대한 포인터를 반환합니다. 장치가 이미 열려 있고 write()가 여기에 직접 데이터를 쓸 수 있습니다.
참고: 스트림이 중지되거나 다른 스트림을 시작하면 포인터가 유효하지 않게 됩니다.
QAudioSink 가 시스템의 오디오 장치에 액세스할 수 있는 경우 state()는 QtAudio::IdleState, error()는 QtAudio::NoError 를 반환하고 stateChanged() 신호가 방출됩니다.
이 프로세스 중에 문제가 발생하면 error()는 QtAudio::OpenError, state()는 QtAudio::StoppedState 을 반환하고 stateChanged() 신호가 전송됩니다.
QIODevice 를참조하세요 .
void QAudioSink::start(QIODevice *device)
device 에서 시스템의 오디오 출력으로 오디오 데이터 전송을 시작합니다. ReadOnly 또는 ReadWrite 모드에서 device 을 열어야 합니다.
QAudioSink 가 오디오 데이터를 성공적으로 출력할 수 있으면 state()는 QtAudio::ActiveState, error()는 QtAudio::NoError 를 반환하고 stateChanged() 신호가 방출됩니다.
이 과정에서 문제가 발생하면 error()는 QtAudio::OpenError, state()는 QtAudio::StoppedState 을 반환하고 stateChanged() 신호가 전송됩니다.
QIODevice 를참조하세요 .
QtAudio::State QAudioSink::state() const
오디오 처리 상태를 반환합니다.
[signal]
void QAudioSink::stateChanged(QtAudio::State state)
이 신호는 장치 state 가 변경되었을 때 방출됩니다. 오디오 출력의 현재 상태입니다.
참고: QtAudio 네임스페이스의 이름은 Qt 6.6까지 QAudio였습니다. 이 신호에 대한 문자열 기반 연결은 매개변수 유형으로 QAudio::State
을 사용해야 합니다: connect(source, SIGNAL(stateChanged(QAudio::State)), ...);
void QAudioSink::stop()
오디오 출력을 중지하고 시스템 리소스에서 분리합니다.
error()를 QtAudio::NoError, state()를 QtAudio::StoppedState 으로 설정하고 stateChanged() 신호를 내보냅니다.
참고: Linux 및 Darwin에서 이 작업은 기본 오디오 버퍼를 동기적으로 비우므로 버퍼 페이로드에 따라 지연이 발생할 수 있습니다. 모든 버퍼를 즉시 재설정하려면 reset 방법을 대신 사용하세요.
reset()도 참조하세요 .
void QAudioSink::suspend()
오디오 데이터 처리를 중지하여 버퍼링된 오디오 데이터를 보존합니다.
error()를 QtAudio::NoError, state()를 QtAudio::SuspendedState 으로 설정하고 stateChanged() 신호를 방출합니다.
qreal QAudioSink::volume() const
0.0에서 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.