播放音频的图书馆? - C++

Jer*_*oen 3 c++ audio

是否有任何C++(LGPL或LGPL)声音库,它允许我通过纯粹指定频率和音量等内容播放声音?

我的目标平台是Linux/Ubuntu,我并不真正关心跨平台.

如果我可以发送一个声音数组并且它能够将它压缩成一个常见的声音文件,例如mp3,那就太好了.

我正在寻找类似OpenGL的东西,你可以在那里'画'声音,然后播放.我听说过OpenAL,但它似乎只是一个用于加载和播放声音的库.

yzt*_*yzt 6

大多数简单和低级音频库(例如OpenAL,SDL等)可以非常容易地播放PCM波形.您使用要播放的wave填充缓冲区并播放它.要从频率和音量以及诸如此类的东西制作波形,您需要编写一些代码(对于简单的波可能需要几行)并且需要知道基本的三角函数.

OpenAL是一个针对3D游戏的跨平台API.它的界面在哲学上类似于OpenGL,并提供管理虚拟3D环境(位置,速度等)中的音频源的功能,并提供一些声音和环境效果(混响等)我知道它可以解码一些压缩格式( MP3,Vorbis,...)使用扩展,但我不确定它是否具有任何编码功能.

SDL(或简单直接媒体层)也是跨平台和面向游戏的,但它提供的不仅仅是音频.但它提供的任何功能都是非常基本的,这是故意的和设计的.SDL是一个平台抽象层.它的音频功能同样非常基础和低级别; 仅提供播放和录制PCM波.当然,有扩展库(例如SDL_mixer)具有更多功能.

参考文献:

  1. 维基百科上的OpenAL
  2. OpenAL主页(截至2013年8月5日,似乎下降)
  3. OpenAL Soft,Creative Labs提供的OpenAL库的分支
  4. SDL主页
  5. SDL_mixer

据我所知,这两个项目都附带了文档和示例及其源代码,因此您可能希望获取源代码并开始尝试.

如果我已经理解你想要正确做什么,这些库中的任何一个都可以很容易地做你想要的,但在我个人看来,SDL更简单易用(除非你想要3D定位音频和效果.)