在Android上以适当的同步同时播放两个不同的流(文件)



我正在使用两个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

希望这种方法有所帮助。

最新更新