播放音频的库?-C++
Libraries for Playing Audio? - C++
是否有任何C++(LGPL或类似LGPL)声音库允许我通过纯粹指定频率和音量等内容来播放声音?
我的目标平台是Linux/Uubuntu,我并不真正关心跨平台。
如果我能发送一个声音数组,它就能把它压缩成一个常见的声音文件,比如mp3,那就太好了。
我正在寻找类似OpenGL的东西,你可以"画"出声音,然后播放。我听说过OpenAL,但它似乎只是一个加载和播放声音的库。
大多数简单和低级的音频库(如OpenAL、SDL等)都可以很容易地播放PCM波形。你用你想播放的波形填充一个缓冲区,然后播放它。要用频率和音量之类的东西制作波形,你需要写一些代码(可能是简单波形的几行),并且需要知道基本的三角法。
OpenAL是一个面向3D游戏的跨平台API。它的界面在哲学上与OpenGL相似,提供了在虚拟3D环境中管理音频源的功能(位置、速度等),并提供了一些声音和环境效果(混响等)。我知道它可以使用扩展解码一些压缩格式(MP3、Vorbis等),但我不确定它是否具有任何编码功能。
SDL(或简单直接媒体层)也是跨平台和面向游戏的,但它提供的远不止音频。但它提供的任何功能都是非常基本的,这是有意的,也是经过设计的。SDL是一个平台抽象层。它的音频功能同样非常基本和低级;仅提供播放和记录PCM波。当然,还有一些扩展库(例如SDL_mixer)具有更多的功能。
参考文献:
- 维基百科上的OpenAL
- OpenAL主页(截至2013年8月5日,似乎已关闭)
- OpenAL Soft,可从创意实验室获得的OpenAL库的分支
- SDL主页
- SDL_混合器
据我所知,这两个项目都附带了文档和示例以及它们的源代码,所以您可能想要获得它们的源码并开始试验。
如果我已经正确理解了你想要做什么,这两个库中的任何一个都可以很容易地做你想要的事情,但在我个人看来,SDL更简单、更容易使用(除非你想要3D位置音频和效果。)
- 用c++阅读音频
- 为什么这个音频包络不能通过开关的情况?
- FFMpeg库:如何在音频文件中精确查找
- 需要反转音频步进公式
- 如何在音频处理中使用超能力时间拉伸类
- C++新手,想知道如何使用VS code 2019播放音频文件
- 如何暂停插孔音频客户端
- 如何以编程方式将音频从任何录制设备路由到任何播放设备
- 将音频从浏览器流式传输到WebRTC本机C++应用程序
- 使用IMFSourceReader(Microsoft媒体基金会)进行音频流传输
- 大声音频无法播放
- 让 iaxClient 将音频发送到缓冲区而不是音频设备/从缓冲区获取音频
- 适用于 macOS 的 Xcode 应用程序。这就是我设置从USB麦克风输入获取音频的方式。一年前工作,现在没有了。为什么
- 波形音频 - waveOutWrite 发出断断续续的声音
- WASAPI 共享模式:音频引擎预期的振幅是多少?
- 在Win7上,在默认端点上轮询音频会话有时会崩溃
- 媒体基金会:WavSink以比实时消耗率更快的速度处理音频-是否可以实时限制后台处理
- PJSUA在两个或多个不同的音频声卡之间切换
- 当直接渲染到WASAPI时,两个流中的一个流没有音频输出
- FFmpeg av_read_frame从音频流返回数据包