Qt iOS问题 - 使用QAudioRecorder会更改音频输出设备
Qt iOS issue - using QAudioRecorder changes audio output device
我正在使用Qt技术开发一个针对iOS和Android两个平台的移动应用程序。
应用程序正在录制声音并在经过一些处理后播放它们。为此,我使用了QtMultimedia模块中的两个类:QAudioRecorder,用于录制音频并将其存储到QBuffer中,以及QMediaPlayer,用于从处理过的缓冲区播放数据。
代码在 Android 上运行良好,但出于某种原因,在 iOS 上播放的音乐非常漂亮,即使我在 max 上设置手机音量并调用mediaPlayer->setVolume(100).
通过一次完全的意外,我发现声音不是从主扬声器播放的,而是从用于电话交谈的小扬声器播放的。这给了我一个必要的提示,并帮助追踪问题的根源:
audioRecorder = new QAudioRecorder();
在注释录音机实例的初始化和对它的所有引用后,音频输出恢复正常。但是当我尝试在代码中的任何位置插入它时 - 它会立即再次切换输出,并且我不知道无法将其更改回来。
我尝试过的:
-
录制完成后删除QAudioRecorder的对象
-
使用 QAudioOutput 而不是 QMediaPlayer,并将输出设备设置为默认设备:audioOutput = new QAudioOutput(QAudioDeviceInfo::d efaultOutputDevice (), audioFormat, this);这是另一个问题,因为QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)只返回"default" - QAudioDeviceInfo::availableDevices(QAudio::AudioInput)返回相同的
-
QAudioInput而不是QAudioRecorder的故事相同
-
获取 QMediaPlayer 的 QMediaService 并从中获取 QAudioOutputSelectorControlQMediaService *service = mediaPlayer->service();QAudioOutputSelectorControl *outputSelector = qobject_cast
(service->requestControl(QAudioOutputSelectorControl_iid) );但此操作返回空
如果您遇到同样的问题或有任何解决它的想法,我想听听。我需要的是能够在不切换输出设备的情况下录制音频
低音量问题是Qt错误,显然尚未修复:https://bugreports.qt.io/browse/QTBUG-37379。
我也遇到了同样的问题,并通过手动破解我的特定用例的Qt源代码来修复它。
- 当直接渲染到WASAPI时,两个流中的一个流没有音频输出
- 如何选择waveIn/waveOut函数C++使用的输入/输出设备
- QSvg生成器未写入其输出设备
- 奇怪的脉冲音频监视器设备行为
- QT 5.7分析音频输出
- 录制来自应用程序的音频输出
- 使用QSoundEffect时选择音频输出分段
- 音频输出C语言(新手)
- qt音频输出示例未构建--缺少生成器类声明
- Qt iOS问题 - 使用QAudioRecorder会更改音频输出设备
- 获取音频输出设备的 GUID
- C++编程的 DAW 用于图形渲染和音频输出
- 音频输出单元启动非常慢
- 如何在Qt中混合音频输入设备
- 正在将音频流读取到输出设备
- 捕获全局音频输出在c++ (Portaudio)
- 坏的音频输出在立体声模式- FFMPEG PortAudio c++
- 是否有可能在Windows 7中抓取指向默认音频端点设备缓冲区的指针?
- 检测语音合成库的音频输出+建议
- 如何在直接显示中选择音频输入设备并捕获音频