Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iPhone上混合声音文件_Iphone_Audio_Mixing - Fatal编程技术网

在iPhone上混合声音文件

在iPhone上混合声音文件,iphone,audio,mixing,Iphone,Audio,Mixing,我有几个wav文件,可能还有一个mp3,我想把它们混合成一个wav或mp3文件。我正在使用C/C++/Obj-C(iPhone)。我真的没有这方面的经验。如果有人能给我一些建议,我将非常感激 基本上,我想做的是类似的事情,比如Audacity可以做的事情,但是是通过编程实现的。难道没有一个声音库,你可以很容易地打开音频文件,并“粘贴”到一个新的在定义的位置?在哪里混合是你不必担心的事情 谢谢。作为起点阅读,它包含很多信息。以下是摘录: 在iphone上混音有三种方式: 音频单元框架 多声道混

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

基本上,我想做的是类似的事情,比如Audacity可以做的事情,但是是通过编程实现的。难道没有一个声音库,你可以很容易地打开音频文件,并“粘贴”到一个新的在定义的位置?在哪里混合是你不必担心的事情

谢谢。

作为起点阅读,它包含很多信息。以下是摘录:

在iphone上混音有三种方式:

  • 音频单元框架
    • 多声道混音器-“允许您将多个音频流混合到单个流”
    • 3D混音器单元-“允许您混合多个音频流,指定立体声输出平移,操纵采样率”
  • OpenAl在游戏开发中的应用
还要检查以下示例::

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


混合线性PCM的两个声音缓冲区只需将其中的每个采样值相加,当然要确保不会溢出。但是,通常情况下,在缓冲区中使用浮点值,所以问题是当您返回文件时。你也应该在iPhone上有CoreAudio,它有各种方法可以打开/读/写不同格式的声音文件。我认为iPhone还有一个更高级的api,不在mac上,请查阅apple文档。

如果您特别想了解Audacity的功能,它使用的是UndertheHood(看起来像麻省理工学院的许可证)。也许你可以试着使用它?

你能澄清一下你是想同时播放你的文件还是混合播放,然后把结果写进一个文件吗?如果是后者,您是否有理由不能预先对它们进行预处理以创建单个文件?如果是前者,你可能会想阅读音频队列服务或OpenAL,这两者都是相当深入的主题。是的,声音可能是同步的。@quano-hv你能找到解决办法吗?@Aadil我还没有实现任何与此相关的东西,自从我问起就没有研究过。现在情况可能已经改变,可能会有易于使用的库。我建议你调查一下,如果发现什么就回来。:)请注意,我不想播放这些文件(在iPhone上),只需处理它们并保存到新文件中即可。:)我会检查链接的。是的,我也明白这一点。这并不难,但需要一些工作。我想一定有人以前做过这件事,甚至可能为它做了一个简单的lib。那会节省我一些时间。阅读文件、添加值和写出来并不是我能想到的最激动人心的事情。:)这似乎只是一个微不足道的功能。我真的很惊讶,似乎很难找到一个已经存在的lib来实现这一点。到目前为止,我还没有在文档中找到任何解释如何打开多个文件、将它们及时放置在特定位置并将它们混合成单个文件的内容。好的,但API中对此有支持,如果我没记错的话,您需要用文件格式的某些属性填充结构,然后将其发送到一些库函数。我做这件事已经有一段时间了,但我要说的是,多种音频格式的格式转换是非常重要的,它都是由API支持并为您完成的。时间线之类的东西,我认为你必须自己发明,除非它是实时播放的,它也得到API的支持。但这应该不会太难,因为您可以通过(时间*采样频率)获得缓冲索引。