我正在构建一个应用程序,该应用程序使用两个媒体播放器同时播放两个音频文件。这在我的三星Galaxy S3设备上工作正常,但是当我在Nexus 5上运行它时,音频变得零碎/不可听。多个MediaPlayers无法在Nexus 5上工作
我想知道阉使用两个媒体播放器同时可以在Nexus 5的,如果没有我怎么可以打两个音频文件在同一时间?
我正在构建一个应用程序,该应用程序使用两个媒体播放器同时播放两个音频文件。这在我的三星Galaxy S3设备上工作正常,但是当我在Nexus 5上运行它时,音频变得零碎/不可听。多个MediaPlayers无法在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。
你能创建一个播放两个音频文件的mp3/wav/aac> 1分钟的代码示例吗?谢谢 – Shubhank
教程here提供了一个完整的例子,说明如何使用AudioTrack
来同时播放多个音频。
注意事项使用AudioTrack如果相同的编解码器没有多个实例支持的Nexus 5和相同限制其他设备仍然失败,那么您的应用程序可能无法在所有的设备上工作回放。
它确实有效,但是我猜测,对于几秒钟的wav文件,你可以使用一个使用较长wav文件的样本并且工作正常吗?目前它似乎以0.1倍的速度播放声音流,声音很慢。 – Shubhank
我认为这意味着AudioTrack不适用于N5。在这种情况下,使用OpenSL ES(Android 4.1+)进行本地化或者使用原始PCM数据进行自己的混音可能是一种方法。混合原始的PCM:http://stackoverflow.com/questions/16766248/mix-audio-in-android,与OpenSL ES混合:[用OpenSL ES的Android的简单流音频混音器 - 第1部分](http:// sbcgamesdev。 blogspot.tw/2013/01/simple-streaming-audio-mixer-for.html),[第2部分](http://sbcgamesdev.blogspot.tw/2013/02/simple-streaming-audio-mixer-for。 HTML) – Kai
我有同样的问题,这是一个总的噩梦:
http://forum.openframeworks.cc/t/choppy-audio-with-ofxandroidsoundplayer-mediaplayer/20961/5
唯一的解决办法似乎用别的东西来播放多声道音频,无论是FMOD或ExoPlayer或手卷上面提到的WAV混音器。
即时通讯工作与较大的audiofiles(如整首歌曲或有声读物)。我测试你发布的代码和soundPoolOnLoadCompleteListener永远不会调用onLoadComplete –
你正在同时播放两个更长的文件?或者只是一个更长的文件和一个短的声音? – ianhanniballake
两个长文件并发。再次测试,onLoadComplete在长时间等待后被调用。现在他们很好地一起比赛,但是他们两人在几秒钟后就被切断了;问题是我需要加载快速发生,我需要整个事情发挥 –