Soundpool只播放文件的前5秒.为什么?

Dal*_*ler 19 android soundpool

我在我的应用程序中使用Soundpool,到目前为止它运行良好,但我确实有一个10秒的wav文件.不幸的是,soundpool只播放前5秒.如何让soundpool播放整首曲目?我已经将wav转换为 - ogg和mp3仍然是同样的问题.它只播放前5秒.任何帮助将非常感激.

//set up audio player
mSoundPool = new SoundPool(20, AudioManager.STREAM_MUSIC, 0);
//load fx
mSoundPoolMap.put(RAW_1_1, mSoundPool.load(this, R.raw.loop1, 1));
//playing soundpool
case R.id.button1:          
mSoundPool.stop(mStream1);
mStream1= mSoundPool.play(mSoundPoolMap.get(RAW_1_1), streamVolume, streamVolume, 1, LOOP_1_TIME, 1f);
Run Code Online (Sandbox Code Playgroud)

UPD Last:也许有人会在这里找到并阅读它.似乎soundpool不能播放超过5秒.这是他的最大值,因为更长的声音使用MediaPlayer.我希望你不会像我那样花那么多时间)

小智 15

所以我认为你在SoundPool中达到了1M的限制.

SoundPool的硬编码缓冲区大小为1M,对于所有加载的文件,以pcm格式存储.

所以它不关心ogg或wav.


Gen*_*kin 11

我们通过降低*.ogg效果采样率来解决类似的问题.我们的初始采样率为44 kHz~且播放的声音仅为10秒,降至16 kHz,可播放性提高到30秒

此讨论中找到了解决方案


Vad*_*4uk 8

SoundPool旨在播放短音效.要播放音乐(大音频文件),您需要使用MediaPlayer

// R.raw.audio_file - res/raw/audio_file.mp3

mediaPlayer = MediaPlayer.create(this, R.raw.audio_file);
mediaPlayer.start();
Run Code Online (Sandbox Code Playgroud)