多个媒体播放器在 Nexus 5 上不起作用



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

我想知道是否可以在 Nexus 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);

使用 AudioTrack,即使在流式传输时也能提供低延迟音频。 http://developer.android.com/reference/android/media/AudioTrack.html。

这里的教程提供了有关如何使用 AudioTrack 同时播放多个音频的完整示例。

请注意,如果在 Nexus 5 和其他具有相同限制的设备上不支持同一编解码器的多个实例,则使用 AudioTrack 播放仍会失败,因此您的应用可能无法在所有设备上运行。

我有同样的问题,这完全是一场噩梦:

http://forum.openframeworks.cc/t/choppy-audio-with-ofxandroidsoundplayer-mediaplayer/20961/5

唯一的解决方案似乎使用其他东西来播放多轨音频,无论是 FMOD 或 ExoPlayer 还是上面提到的手动滚动 WAV 混音器。

最新更新