我正在构建一个使用两个媒体播放器同时播放两个音频文件的应用程序。这在我的三星 Galaxy S3 设备上运行良好,但是当我在 Nexus 5 上运行它时,音频变得支离破碎/无法收听。
我想知道在 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 混音器。