【问题标题】:Mixing Audio Files混合音频文件
【发布时间】:2010-02-03 11:11:15
【问题描述】:

我的音频文件很少:

  • f_1 - 长度 10 秒
  • f_2 - 长度 3 秒
  • f_3 - 长度 1 秒

我需要的是在 f_1 的特定部分(即等于 6 秒的位置)找到一种混合(合并)f2 和 f3 的方法

我正在查看音频示例,但它们对我没有多大帮助,所以任何可能有帮助的想法\参考\文档?

非常感谢!

【问题讨论】:

  • 您是在寻找特定于 Android 的解决方案,还是只想大致了解如何以编程方式组合(混合)采样音频?
  • 我正在寻找 Android 特定的解决方案。好吧,我不期待解决方案,而是像我应该看的类的参考(如果有的话)。谢谢!
  • 您是否希望将音频混合到一个文件中?还是您想通过音频通道混合音频?
  • @haseman 是的,下到可以稍后处理的文件。
  • @haseman 虽然如果我能以某种方式将输出重定向到文件,则通过音频通道进行混音是可以接受的。

标签: android audio mixing


【解决方案1】:

不幸的是,我认为设备上没有任何东西可以进行文件混音。在我看来,您有两个选择:

1) 将这两个文件发送到服务器并使用 ffmpeg 或其他一些免费工具进行混音。

2) 如果它必须保留在手机本地,您可以使用 Android SoundPool (http://developer.android.com/reference/android/media/SoundPool.html) 加载音频并将它们设置为同时播放。你可以在这里找到一个很好的教程:http://www.droidnova.com/creating-sound-effects-in-android-part-1,570.html

声音池需要您管理多个文件,而不是对单个文件进行混音和播放。如果 soundpool 允许您将输出作为 IOStream 获取,那就太酷了,但是,可惜的是,SDK 似乎不允许这样做。此外,如果 AudioRecorder 允许您从音乐层获取流,那就太好了……但这看起来也不可能。音频输入列表:http://developer.android.com/reference/android/media/MediaRecorder.AudioSource.html

我知道这不是您正在寻找的,但希望您可以从一些链接中获得解决方法。

【讨论】:

  • 这是一个糟糕的答案,基于对什么是混合的根本误解。混合音频文件只需要将它们都转换为线性 PCM、适当缩放并添加样本。无需将数据导出到外部服务器,Android 设备本身就是一台出色的计算机。
【解决方案2】:

如何将其转换为波形并进行 FFT,将其混入所需范围 [“手动”] 并进行 iFFT 并将其转换回 mp3。

注意:这涉及到一些数学,在实际编码之前,您至少应该了解傅里叶变换的工作原理。

注意:我不知道是否有“库”允许愉快地访问 FFT、搜索和/或复用。

如果我有思想缺陷,请纠正我,但我认为这应该可行。

【讨论】:

  • 一旦有了 wav(线性 PCM)数据,就不会涉及 FFT - 在 时域 中可以很容易地进行混合,因此无需转换到 频率域 是必需的。
猜你喜欢
  • 2014-09-22
  • 1970-01-01
  • 1970-01-01
  • 2012-03-02
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 2013-05-22
  • 1970-01-01
相关资源
最近更新 更多