准确的跨平台声音处理

Posted

技术标签:

【中文标题】准确的跨平台声音处理【英文标题】:Accurate cross-platform sound manipulation 【发布时间】:2011-05-11 22:35:32 【问题描述】:

如何在 C++ 中播放和暂停波形文件并获取播放的长度和持续时间(以毫秒为单位)。它最好是跨平台的,但不是 Qt,因为 QSound 很简单,而且 phonon 需要 DirectX 并且不适用于 mingw。谢谢

【问题讨论】:

【参考方案1】:

我会使用像libAO 这样的低级库。您可以控制播放的数量,因此要“暂停”,您只需停止调用 ao_play() 并计算您发送的样本数。

简单的音频播放实际上并不是一项需要复杂 API 的复杂任务。

【讨论】:

+1 这个库使用起来非常简单直接。可惜它不是面向对象的。此外,如果您想播放多种声音,则需要自定义混音器。【参考方案2】:

看看http://www.portaudio.com/。此外,SFML 有一个音频模块:http://www.sfml-dev.org/index.php。此外,还存在诸如 http://www.fmod.org/ 和 BASS(Win、Mac)之类的商业(但可免费使用,具体取决于项目)替代方案。

【讨论】:

【参考方案3】:

如果您查看Audacity 的源代码,您可能会发现一些有用的建议。

【讨论】:

【参考方案4】:

嗯,总是有jack。它非常易于使用并具有良好的文档,而且它旨在作为一个低延迟的跨平台 I/O,并带有用于处理网络声音处理的集成工具。对于听起来您正在尝试做的事情来说,这是一款相当不错的软件。

【讨论】:

以上是关于准确的跨平台声音处理的主要内容,如果未能解决你的问题,请参考以下文章

C跨平台声音输入库[关闭]

在 python 中播放声音文件的跨平台方式是啥?

跨平台、跨浏览器从 Javascript 播放声音的方式? [复制]

cmake跨平台对编译器的准确识别

AI创想秀,体验华为云ModelArts平台声音分类

如何搭建Devops平台定时任务处理集群