오디오 개요
오디오 기능
Qt Multimedia 는 오디오 입력, 출력 및 프로세싱에 대한 낮은 수준과 높은 수준의 접근 방식을 모두 다루는 다양한 오디오 클래스를 제공합니다.
오디오 구현 세부 사항
압축 오디오 재생하기
단순 비압축 오디오가 아닌 미디어 또는 오디오 파일을 재생하려면 QMediaPlayer C++ 클래스 또는 MediaPlayer QML 유형을 사용할 수 있습니다. QMediaPlayer 클래스 및 관련 QML 유형은 필요한 경우 동영상도 재생할 수 있습니다.
자세한 내용은 지원되는 미디어 형식을 참조하세요.
오디오를 재생하려면 미디어 플레이어를 QAudioOutput 객체(또는 QML AudioOutput 요소)에 연결해야 합니다.
다음은 C++를 사용하여 로컬 파일을 재생하는 방법입니다:
player = new QMediaPlayer; audioOutput = new QAudioOutput; player->setAudioOutput(audioOutput); // ... player->setSource(QUrl::fromLocalFile("/Users/me/Music/coolsong.mp3")); audioOutput->setVolume(50); player->play();
QML에서도 동일한 기능을 제공합니다:
MediaPlayer { audioOutput: AudioOutput {} source: "file:///path/to/my/music.mp3" Component.onCompleted: { play() } }
파일에 오디오 녹음하기
파일에 오디오를 녹음하려면 캡처 세션을 만들고 오디오 입력과 레코더를 연결해야 합니다. 이러한 요소는 QMediaCaptureSession, QAudioInput, QMediaRecorder 클래스로 구현됩니다. 기본으로 구성된 QAudioInput 은 시스템 기본 오디오 입력을 선택합니다. 레코더는 간단한 record() 및 stop() 함수로 녹음 프로세스를 제어합니다. 또한 출력 위치, 오디오 인코더 또는 파일 컨테이너 형식을 선택하는 데 사용할 수 있습니다.
기본 마이크에서 오디오를 녹음하는 세션은 C++에서 다음과 같이 보입니다:
QMediaCaptureSession session; QAudioInput audioInput; session.setAudioInput(&input); QMediaRecorder recorder; session.setRecorder(&recorder); recorder.setQuality(QMediaRecorder::HighQuality); recorder.setOutputLocation(QUrl::fromLocalFile("test.mp3")); recorder.record();
QML에서도 동일하게 구현할 수 있습니다:
CaptureSession { audioInput: AudioInput {} mediaRecorder: MediaRecorder { id: recorder outputLocation: "file:///path/to/test.mp3" } Component.onCompleted: { recorder.record() } }
QMediaCaptureSession 는 이미지 캡처 또는 비디오 녹화와 같은 보다 복잡한 사용 사례도 지원합니다.
지연 시간이 짧은 음향 효과
사운드 장치에 대한 원시 액세스 외에도 QSoundEffect 클래스(및 SoundEffect QML 유형)는 사운드를 재생하는 보다 추상적인 방법을 제공합니다. 이 클래스를 사용하면 필요할 때 짧은 지연 시간으로 재생할 수 있는 WAV 형식의 파일을 지정할 수 있습니다.
조정할 수 있습니다:
- Number of loops 사운드 효과가 재생되는
- Volume 사운드 효과의
- Muting 사운드 효과의
저레벨 오디오 재생 및 녹음
Qt Multimedia 의 C++ API는 오디오 입력 및 출력 기능에 대한 원시 액세스를 위한 클래스를 제공하여 애플리케이션이 마이크와 같은 장치에서 원시 데이터를 수신하고 스피커 또는 기타 장치에 원시 데이터를 쓸 수 있도록 합니다. 일반적으로 이러한 클래스는 오디오 디코딩이나 기타 처리를 수행하지 않지만 다양한 유형의 원시 오디오 데이터를 지원할 수 있습니다.
QAudioSink 클래스는 원시 오디오 데이터 출력을 제공하고 QAudioSource 클래스는 원시 오디오 데이터 입력을 제공합니다. 사용 가능한 하드웨어에 따라 사용 가능한 오디오 출력 및 입력이 결정됩니다.
푸시 및 풀
로우 레벨 오디오 클래스는 push
와 pull
의 두 가지 모드로 작동할 수 있습니다. pull
모드에서 오디오 장치는 QIODevice 을 제공하여 시작됩니다. 출력 장치의 경우, QAudioSink 클래스는 더 많은 오디오 데이터가 필요할 때 QIODevice 에서 데이터를 가져옵니다( QIODevice::read() 사용). 반대로 QAudioSource 을 사용하는 pull
모드의 경우 오디오 데이터를 사용할 수 있는 경우 데이터가 QIODevice 에 직접 기록됩니다.
push
모드에서 오디오 장치는 필요에 따라 쓰거나 읽을 수 있는 QIODevice 인스턴스를 제공합니다. 일반적으로 이렇게 하면 코드가 더 간단해지지만 버퍼링이 증가하여 지연 시간에 영향을 줄 수 있습니다.
압축된 오디오를 메모리로 디코딩하기
압축된 오디오 파일을 디코딩하고 추가 처리를 직접 수행해야 하는 경우가 있습니다. 예를 들어, 여러 샘플을 믹싱하거나 사용자 지정 디지털 신호 처리 알고리즘을 사용하는 경우 QAudioDecoder 에서 로컬 파일 또는 QIODevice 인스턴스의 데이터 스트림 디코딩을 지원합니다.
다음은 로컬 파일 디코딩의 예시입니다:
QAudioFormat desiredFormat; desiredFormat.setChannelCount(2); desiredFormat.setSampleFormat(QAudioFormat::Int16); desiredFormat.setSampleRate(48000); QAudioDecoder *decoder = new QAudioDecoder(this); decoder->setAudioFormat(desiredFormat); decoder->setSource("level1.mp3"); connect(decoder, &QAudioDecoder::bufferReady, this, &AudioDecodingExample::readBuffer); decoder->start(); // Now wait for bufferReady() signal and call decoder->read()
공간 오디오
모듈은 Qt Spatial Audio 모듈은 3D 공간에서 음장을 구현하기 위한 API를 제공합니다.
참조 문서
C++ 클래스
스테레오 오버레이 사운드 | |
특정 포맷과 샘플 레이트를 가진 오디오 샘플 컬렉션을 나타냅니다. | |
QMediaCaptureSession을 통해 QMediaRecorder에 커스텀 오디오 버퍼를 제공하는 데 사용됩니다. | |
QMediaPlayer에서 제공하는 오디오 데이터를 캡처하는 데 사용됩니다. | |
오디오 디코딩 구현 | |
오디오 장치 및 해당 기능에 대한 정보 | |
3차원 음장 관리 | |
오디오 스트림 파라미터 정보 저장 | |
오디오 입력 채널을 나타냅니다. | |
QAudioEngine에 의해 정의된 음장을 듣는 사람의 위치와 방향을 정의합니다. | |
오디오 출력 채널을 나타냅니다. | |
오디오 출력 장치로 오디오 데이터를 전송하기 위한 인터페이스 | |
오디오 입력 장치에서 오디오 데이터를 수신하기 위한 인터페이스 | |
오디오 및 비디오 콘텐츠의 캡처를 허용합니다. | |
캡처 세션 인코딩 및 녹화에 사용 | |
지연 시간이 짧은 사운드 효과를 재생하는 방법 | |
3D 공간의 사운드 오브젝트 | |
오디오 클래스에서 사용하는 열거형 포함 |
QML 유형
스테레오 오버레이 사운드 | |
3D 씬 내부의 사운드 오브젝트를 관리합니다. | |
캡처 세션에서 오디오를 캡처하는 데 사용할 오디오 입력입니다. | |
오디오 엔진에 의해 정의된 사운드 필드를 듣는 사람의 위치와 방향을 정의합니다. | |
캡처 세션의 재생 또는 모니터링에 사용할 오디오 출력입니다. | |
오디오 및 비디오 콘텐츠의 캡처를 허용합니다. | |
씬에 미디어 재생을 추가합니다. | |
캡쳐 세션에서 생성된 미디어 인코딩 및 녹화용 | |
유형은 QML에서 사운드 효과를 재생하는 방법을 제공합니다. | |
3D 공간의 사운드 오브젝트 | |
오디오 장치를 설명합니다. | |
미디어 파일에 대한 메타 데이터 제공 |
예제
사용 가능한 오디오 장치와 그 구성을 테스트합니다. | |
QAudioSink 클래스를 사용하여 오디오 재생 활성화하기. | |
사용 가능한 장치와 지원되는 코덱 알아보기. | |
QAudioSource 클래스를 사용하여 오디오 녹음하기. | |
Qt의 공간 오디오 엔진의 일부 기능을 보여줍니다. |
© 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.