多个MediaPlayers不适用于Nexus 5

时间:2014-02-19 22:34:57

标签: android android-mediaplayer nexus-5

我正在构建一个使用两个媒体播放器同时播放两个音频文件的应用。这在我的三星Galaxy S3设备上工作正常,但是当我在Nexus 5上运行它时,音频变得支离破碎/不可听。

我想知道在Nexus 5上同时使用两个媒体播放器是否可行,如果不能,我怎么能同时播放两个音频文件呢?

4 个答案:

答案 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混音器。