在Android上以正确同步的方式同时播放两个不同的流(文件)

时间:2018-10-16 17:06:56

标签: android android-mediaplayer soundpool

我正在使用两个mediaPlayer实例将两个不同的流发送到每个通道。一半时间,它可以正常工作,但有时左右声道之间有滞后,这显然是可以听见的。除了Android中的soundpool以外,还有没有其他选择可以同步播放多个音频文件? soundpool不适合我的应用程序,因为音频文件很大(每个文件大约20 MiB)。有问题的音频文件格式为:FLAC。

1 个答案:

答案 0 :(得分:1)

我发现Android API没有提供适当的内置混合功能。我最终使用了wav文件而不是FLAC,并根据需要即时混合它们。这是我如何实现的更高层次的描述。

Read both wav files and saving data part in byte array (Don't forget to strip out header bytes)

Mix them byte by byte to generate a unified wav file

在我的用例中,我只需要混合左右声道,但是可以根据需要进行各种转换。

Create a temporary file to hold mixed data

Play the temporary file with mediaPlayer

一个人也可以使用audioTrack播放而不将结果字节数组存储到临时文件中,但是由于内置的​​seekTo功能,我选择使用mediaPlayer

希望,这种方法很有帮助。