我正在使用两个mediaPlayer
实例向每个通道发送两个不同的流。一半的时间,它工作正常,但有时左右声道之间存在滞后,清晰可闻。除了 Android 中的soundpool
之外,还有其他选择可以同步同时播放多个音频文件吗?soundpool
不适合我的应用程序,因为音频文件很大(每个大约 20 MiB(。有问题的音频文件格式是:FLAC。
我发现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
。
希望这种方法有所帮助。