便携式库可以使用C / C ++在各个5.1通道上播放样本吗?

时间:2011-04-06 13:03:15

标签: c++ c audio openal

我正在寻找一个免费的便携式C或C ++库,它允许我在5.1设置中的特定通道上播放单声道声音样本。例如,应使用左前扬声器播放声音,使所有其他扬声器保持静音。有没有能够这样做的图书馆?

我看了一下OpenAL。但是,我只能指定声音应该来自的位置,但在我看来,我不能说“仅使用左前声道播放此声音”。

欢迎任何提示!

4 个答案:

答案 0 :(得分:3)

  

我看了一下OpenAL。但是,我只能指定声音应该来自的位置,但在我看来,我不能说“仅使用左前声道播放此声音”。

我不认为这是真的。我认为你可以用OpenAL做到这一点,尽管它不是微不足道的。如果您提供mono格式数据,OpenAL只会执行位置操作。如果你给它立体声或更高,它会按照提供的方式播放数据。但是,您只能保证立体声支持。您需要检查系统上是否有5.1声道格式扩展(AL_FORMAT_51CHN16)。如果是这样,那么,我认为您将声音提供给所需的通道,并在缓冲样本时将零提供给所有其他通道。请注意,声卡上需要硬件支持。 “通用软件”设备不会削减它。

请参阅OpenAL邮件列表中的this discussion

或者,我认为PortAudio是开放的,跨平台的,并且支持多通道输出。您仍然必须交错数据,这样,如果您要将声音发送到单个频道,则必须向所有其他频道发送零。在设备上打开流时,您还需要进行一些检查,以确保设备支持6个输出通道。

答案 1 :(得分:0)

很久以前我用RTAudio。但是我不能说这个lib是否可以做你想要存档的东西,但也许它有帮助。

答案 2 :(得分:0)

http://fmod.org也可以做到这一点

答案 3 :(得分:0)

我将 BASS音频库 http://www.un4seen.com用于我的所有音频,声音和音乐项目。我对此很开心。

  

BASS是一个音频库,为开发人员提供强大而高效的样本,流(MP3,MP2,MP1,OGG,WAV,AIFF,自定义生成,以及更多通过附加组件),MOD音乐(XM,IT,S3M) ,MOD,MTM,UMX),MO3音乐(MP3 / OGG压缩MOD)和录音功能。全部在一个小的DLL中,大小不超过100KB *。可以使用C / C ++,Delphi,Visual Basic,MASM,.Net和其他API。 BASS适用于Windows,Mac,Win64,WinCE,Linux和iOS平台。

我从未用它在5.1配置中播放不同的样本。但是,根据他们自己的文档,它应该是可能的。

  

主要功能

     
      
  • 样本支持WAV / AIFF / MP3 / MP2 / MP1 / OGG和自定义生成的样本

  •   
  • 样本流使用“推”和“拉”系统,以8/16/32位流式传输任何样本数据。 文件流 MP3 / MP2 / MP1 / OGG / WAV / AIFF文件流。 互联网文件流。从HTTP和FTP服务器(包括Shoutcast,Icecast和Icecast2)流式传输数据,具有IDN和代理服务器支持以及可调缓冲。 **自定义文件流**使用任何交付方式从任何地方流式传输数据,同时使用“推”和“拉”系统

  •   
  • 多频道支持多种普通立体声,包括多声道OGG / WAV / AIFF文件

  •   
     

...

     
      
  • 多个输出同时使用多个声卡,并在它们之间移动通道

  •   
  • 扬声器分配将流和MOD音乐分配给特定扬声器,以利用能够提供超过普通立体声的硬件(最多4个单独的立体声输出和7.1声卡)

  •   
  • 3D声音在任何3D位置播放样本/流/音乐

  •   
     

<强>许可

     

BASS免费用于非商业用途。如果您是非商业实体(例如个人)并且您没有从您的产品中赚钱(通过销售,广告等),那么您可以免费使用BASS。否则,将需要以下许可之一。