【发布时间】:2011-10-15 05:35:47
【问题描述】:
我在 Qt 论坛上发布了这个问题,但没有得到任何答案。这就是我在这里发布它的原因。
我想知道有没有办法在 Qt 中同时录制和播放声音。我想从麦克风录制声音,同时我想在扬声器/耳机中播放。
有没有办法在 Qt 中做到这一点?还是我需要使用任何其他库?
如果解决方案是跨平台的就好了(我需要涵盖 windows、linux 和 mac)。如果不可能,那么 linux 解决方案就可以了。
顺便说一句,我使用的是 Qt 4.7。
编辑
我的最新实现是here。我创建了QIODevice 的子类并重新实现了它的writeData 和readData 方法,以便可以使用循环缓冲区完成读取和写入。我按照this suggestion 做了这个。这段代码也不起作用,因为QAudioOutput 实例面向Underrun Error,根据this documentation 意味着 -
音频数据没有以足够快的速度传送到音频设备
我已经应用了一个 hack 来暂时解决这个问题。在outputStateChanged 方法中,我正在检查输出的状态是否已更改为IDLE,如果已更改,我将再次调用start() 方法,指定公共缓冲区。我不想将其用作永久解决方案,因为它感觉很hacky,而且我在没有正确调查其原因的情况下吞下了一个错误。
我应该怎么做才能解决这个问题?
我也尝试使用Phonon 解决此问题,但失败了,因为我对该模块没有足够的了解。
【问题讨论】:
-
@BrianRoach:我什么都没试过,因为我找不到开始的方法。我知道我可以使用 QAudioInput 进行声音输入并播放声音,我可以使用 QAudioOutput,但这两者都适用于文件,即 QAudioInput 将输入存储在文件中,然后 QAudioOutput 播放该文件中的声音。这种方法在全双工场景中肯定行不通,不是吗?我找到了一些以前的答案,但它们都很旧,他们建议使用其他库,如 openAL、portAudio 等。我想知道是否有任何使用 Qt 库的解决方案。