我需要在N个频道中实现单独音频文件的播放,文件可以顺序播放或并行播放。我需要在Android上实现它。
时间轴:
| file a ... | file d .... | file b ... | ...... | file k | ....
| ..... | file g | file c .. | file p。| ....
我在考虑两个选项,一个是FMOD解压缩文件并同时播放它们。我已经研究过,FMOD看起来比使用AudioTrack手动播放要好得多。但是,我无法理解FMOD是否允许我们在不播放的情况下保存整个合并输出。
我知道使用解决方案here我们可以将输出重定向到wav文件,但是可以立即创建最终输出并使用FMOD保存吗?或者我将不得不手动将PCMS合并到一个流中。
感谢。
答案 0 :(得分:1)
这里的一个重要问题是为什么你需要保存文件,如果可以离线执行,那么它会更简单。如果你必须记录几个文件的串联(包括其他文件并行),那么FMOD就很有可能。
一种方法是使用wave-writer-nrt输出模式,它允许您以比实时更快的速度输出基于FMOD playound调用的wav文件。
另一种方法是在播放时使用自定义DSP访问任何子混音的数据流,如果您希望其他声音同时播放,则非常有用。
另一个是简单地创建声音对象,然后使用Sound :: lock访问PCM数据,您可以将自己连接到目的地。请记住,所有声音都需要相同的采样率和通道,否则您需要进行处理。另外请记住,除非您想自己混合音频,否则不能对平行声音执行此操作。