0

我需要在 N 个通道中实现单独音频文件的播放,文件可以顺序播放或并行播放。我需要在 Android 上实现它。

时间线:

|文件 a...|文件 d....|文件 b...|......|文件 k|....

|.....|文件 g|文件 c..|文件 p.|....

我在考虑两种选择,一种是 FMOD 来解压缩文件并同时播放它们。我已经研究过,FMOD 似乎比使用 AudioTrack 手动播放更合适,也更容易。但是,我不明白 FMOD 是否允许我们保存整个合并的输出而不播放它。

我知道在这里使用解决方案我们可以将输出重定向到 wav 文件,但是是否可以立即创建最终输出并使用 FMOD 保存它?还是我必须手动将 PCMS 合并到一个流中..

谢谢。

4

1 回答 1

1

这里的一个重要问题是为什么您需要保存文件,如果可以离线执行此操作,那么它会简单得多。如果您必须记录多个文件的串联(包括并行播放的其他文件),则使用 FMOD 很有可能。

一种方法是使用 wave-writer-nrt 输出模式,它允许您以比实时更快的速度输出基于 FMOD playsound 调用的 wav 文件。

另一种方法是使用自定义 DSP 在播放时访问任何子混音的数据流,如果您希望同时播放其他声音,这很有用。

另一种是简单地创建声音对象,然后使用 Sound::lock 访问 PCM 数据,您可以将自己连接到目的地。请记住,所有声音都需要具有相同的采样率和通道,否则您需要进行处理。另外请记住,除非您想自己混合音频,否则不能对并行声音执行此操作。

于 2011-09-30T05:07:02.367 回答