我正在构建一个使用两个媒体播放器同时播放两个音频文件的应用。这在我的三星Galaxy S3设备上工作正常,但是当我在Nexus 5上运行它时,音频变得支离破碎/不可听。
我想知道在Nexus 5上同时使用两个媒体播放器是否可行,如果不能,我怎么能同时播放两个音频文件呢?
答案 0 :(得分:5)
SoundPool类专门设计用于将多个音频文件复用在一起,以便它们可以一起播放。
SoundPool soundPool = new SoundPool(2, // number of streams
AudioManager.STREAM_MUSIC, // stream type
0); // source quality, does nothing
soundPool.setOnLoadCompleteListener(loadCompleteListener);
int soundOneId = soundPool.load(context, R.raw.sound1, 1);
int soundTwoId = soundPool.load(context, R.raw.sound2, 1);
// Once loadCompleteListener.onLoadComplete has been called for both sounds
soundPool.play(soundOneId);
soundPool.play(soundTwoId);
答案 1 :(得分:5)
使用AudioTrack,即使在流式传输时也能提供低延迟音频。 http://developer.android.com/reference/android/media/AudioTrack.html
答案 2 :(得分:3)
教程here提供了有关如何使用AudioTrack
同时播放多个音频的完整示例。
请注意,如果Nexus 5和具有相同限制的其他设备不支持相同编解码器的多个实例,则使用AudioTrack进行播放仍会失败,因此您的应用可能无法在所有设备上运行。
答案 3 :(得分:1)
我有同样的问题,这是一个完全的噩梦:
http://forum.openframeworks.cc/t/choppy-audio-with-ofxandroidsoundplayer-mediaplayer/20961/5
唯一的解决方案似乎是使用别的东西来播放多轨音频,无论是FMOD还是ExoPlayer或上面提到的手动WAV混音器。