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