【问题标题】:How to mix sound files of different format using FFMPEG?如何使用 FFMPEG 混合不同格式的声音文件?
【发布时间】:2011-08-08 13:17:55
【问题描述】:

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

我已经为 iOS 编译了 FFMPEG,链接为:http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2009-October/076618.html

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

【问题讨论】:

  • 你能定义混音是什么意思吗?在 FFMPEG 中,您可以将单声道轨道组合成一个立体声轨道。但我不认为 ffmpeg 会让你在传统意义上“混合”,它是为转换而设计的。
  • 混合我的意思是:假设我有一个带有鼓声的文件和另一个带有吉他声音的文件。混合时,输出文件应该像完整的乐器一样同时播放这两种音乐。
  • 我不认为 ffmpeg 会让你这样做。
  • 有没有其他方法可以做到这一点。另外,我必须将混响效果添加到 .m4a 文件中。有没有这样的库或api可以实现两者?
  • @iPhoneDev :你能分享一下你是如何实现不同格式文件的混音的吗?我有相同的查询。我尝试混合两个 .caf 文件,它正在工作。但是当我尝试混合不同的格式时,它不起作用。如果您能对此提供一些指导,那就太好了。

标签: objective-c ios audio ffmpeg mixing


【解决方案1】:

这更像是一个建议而不是一个答案。我对 obj-c 没有任何经验,尽管我曾使用其他语言的音频格式。除非您找到一些执行此特定任务的库,否则您可能需要解码文件并将其数据转换为一些常见的数字表示。

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

mp3ToWavSample = mp3Sample * 32767

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

mergedSample = convertedSample1 + convertedSample2

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

至于为您的曲目添加混响,我建议您在另一个问题中寻求帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多