2011-04-19 90 views
2

我需要通过iPad应用程序中的代码将不同类型的音频文件混合到一个输出文件中。 例如,我需要将.m4a文件与.mp3或.wav或任何其他格式文件合并。 生成的输出文件应该是.m4a类型。如何使用FFMPEG混合不同格式的声音文件?

我已经编译FFMPEG适用于iOS与链接:http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html

现在,我无法理解在哪个方向前进?

+0

你可以通过混合来定义你的意思吗?在FFMPEG中,您可以将单声轨道合并为一个立体声轨道。但我认为ffmpeg不会让你在传统意义上“混合”,它是为转换而设计的。 – Twelve47 2011-04-19 10:09:37

+1

通过混合我的意思是:假设我有一个带有鼓节奏的文件,另一个带有吉他声音。混合时,输出文件应该像一个完整的乐器一样同时播放这两个音乐。 – iPhoneDev 2011-04-19 10:18:13

+0

我不认为ffmpeg会让你这样做。 – Twelve47 2011-04-19 10:32:46

回答

0

这不仅仅是一个答案而是一个建议。我没有任何关于obj-c的经验,尽管我已经使用过其他语言的音频格式。除非你找到一些库来完成这个特定的任务,否则你可能需要解码这些文件并将它们的数据转换为一些常见的数字表示形式。

sample data of a .wav文件存储为-32768至32767范围内的有符号整数,而mp3 sample data存储为范围为-1至+1的浮点数。任何一种表示都可以通过简单的计算转换为另一种表示。

mp3ToWavSample = mp3Sample * 32767 

一旦数据转换“合并”变得非常容易。您可以简单地将样本值添加到一起。

mergedSample = convertedSample1 + convertedSample2 

您需要将此应用于mp3中的每个示例。根据文件的大小,这可能是一个重要的处理任务。

至于添加混响到你的轨道,我建议你在另一个问题上寻求帮助。