qt中使用libsndfile实时播放声音c++

Posted

技术标签:

【中文标题】qt中使用libsndfile实时播放声音c++【英文标题】:Using libsndfile to play sound real time c++ in qt 【发布时间】:2012-02-02 19:57:38 【问题描述】:

我正在使用 libsndfile 读取和操作声音文件。 我正在徘徊什么是实时播放这些声音的最简单方法 在 Qt 中。

我曾尝试查看 QtAudioOutput,但必须使用 QtAudioFormat,即 配置起来相当麻烦。

我想要的只是 1) 使用 libsndfile 读取数据 2) 操作数据 3) 将缓冲区发送到音频输出库。

【问题讨论】:

您希望它在哪些平台上运行? 我希望它可以在 windows、mac 和 linux 上运行。 【参考方案1】:

尝试使用 sndfile-play 使用 libsndfile 播放音频文件,或者基于 libsndfile 的库,例如 ALURE

http://kcat.strangesoft.net/alure.html

您可以使用 libsndfile 手动加载音频文件并使用 OpenAL 播放文件。这基本上就是 ALURE 正在做的事情。

【讨论】:

OpenAl 对于我正在尝试做的事情似乎有点矫枉过正。再加上在不同平台上安装似乎并不容易。 好吧,老实说,我不认为这个问题是微不足道的。 OpenAL 是一个跨平台 API,旨在执行此操作。作为一个广为人知的标准,有很多教程可以帮助您入门。我很想知道您最终选择了哪种解决方案,请在完成后更新此问题。【参考方案2】:

您可以使用 Phonon 输出音频。这是来自Phonon 模块的文档片段

源的类型由媒体源本身设置,并且依赖于用于创建它的构造函数。请注意,可以通过实现 QIODevice 提供来自任何来源的数据。

如果你想以 Qt 方式实现,基本上你必须实现自己的 QIODevice

【讨论】:

以上是关于qt中使用libsndfile实时播放声音c++的主要内容,如果未能解决你的问题,请参考以下文章

QT (C++) 中的简单声音 (.wav) 播放应用程序

音频处理贤内助--libsndfile

如何使用 libsndfile 打开加载到内存中的声音文件?

C++ 在控制台应用程序中播放视频音频

在 Qt 和 C++ 中改变 mp3 速度 [QMediaPlayer]

错误:主要格式为 0(libsndfile,Qt)