2010-04-16 57 views
6

我有几个wav文件,可能还有一个mp3,我想混合到一个wav或mp3文件。我正在使用C/C++/Obj-C(iPhone)。我真的没有这方面的经验。如果有人能给我一些指点,我将非常感激。在iPhone上混合声音文件

基本上我想要做的是类似的事情,例如Audacity可以做的,但以编程方式。是不是有一个声音库,您可以轻松打开音频文件并将它们“粘贴”到指定位置的新文件夹中?哪里混音是你不必担心的事情?

谢谢。

+0

你能说清楚你是想同时播放文件还是混合文件,然后将结果写入文件?如果是后者,是否有理由不能预先处理它们以提前创建单个文件?如果是前者,你可能要阅读Audio Queue Services或OpenAL,这两者都是非常深刻的主题。 – warrenm 2010-04-16 14:11:14

+0

编辑问题更清楚。是的,声音可能是同时发生的。 – quano 2010-04-18 14:58:17

+0

@quano hv你找到解决方案? – Aadil 2011-11-15 12:06:57

回答

0

阅读Multimedia support作为一个起点,它包含了很多信息。下面是摘录:

有3种方式在iPhone上混合音频:

  • 音频单元框架
    • 多通道混频器 - “让你多音频流混合到一个流”
    • 3D混音器单元 - “你可以混合多个音频流,指定立体声输出声像,操纵采样率”
  • 使用的OpenAL在游戏开发

还要检查以下内容样品出来:iPhoneMultichannelMixerTest

两个输入总线创建每个输入音量控制。还提供了一个整体调音台输出音量控制,每个总线可以启用或禁用

+0

请注意,我不想播放这些文件(在iPhone上),只需对它们进行操作并保存到新文件中。 :)我会检查链接。 – quano 2010-04-18 16:45:57

3

混合线性PCM的两个声音缓冲区只是将它们中的每个样本值添加到一起的问题,当然,请确保您不要没有溢出。通常你会在缓冲区中使用浮点值,所以问题是当你回到文件。您还应该在iPhone上提供CoreAudio,它具有以不同格式打开/读取/写入声音文件的一切手段。我认为还有一个更高级别的API可用于iPhone,它不在Mac上,查找苹果文档。

+0

是的,我也了解这一点。这并不难,但需要一些工作。我想有人以前一定要做到这一点,甚至可能为此做了一个简单的解释。这会为我节省一些时间。阅读文件,增加价值并写出来并不是我能想到的最令人激动的事情。:)它看起来像这样一个微不足道的功能。我真的很惊讶,看起来好像是找到一个已经存在的lib来完成这个工作。到目前为止,我还没有在文档中找到解释如何打开多个文件的任何内容,并将它们放在特定位置,并将它们混合到一个文件中。 – quano 2010-04-18 17:59:01

+0

好的,但在API中有这方面的支持,如果我没有记错的话,你需要用你的文件格式的一些属性填充一个结构体,然后将它发送给一些库函数。因为我已经完成了这个任务,不过我想说大量音频格式的格式转换并不是微不足道的,它都是由API支持和完成的。像一个时间线,我认为你必须发明自己,除非它是实时播放你的后,它也支持API。但是它不应该太难做,因为你可以通过(时间*样本频率)得到缓冲区索引。 – Fred 2010-04-18 18:30:52

2

如果您正在专门寻找Audacity的功能,它使用引擎盖下的PortAudio(看起来像MIT许可证)。也许你可以尝试使用它?