所以我的声音长达6.5秒,当我用soundpool播放时,它只播放5秒......我尝试使用媒体播放器,但对于这种应用来说速度太慢了。 SoundPool代码:
SoundPool sp;
OnCreate
sp = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
dub1s = sp.load(this, R.raw.dub1, 1);
Button
if (dub1s != 0)
sp.play(dub1s, 1, 1, 0, 0, 1);
}
答案 0 :(得分:2)
尝试使用以下加载功能。
public int load (FileDescriptor fd, long offset, long length, int priority)
第三个参数是声音的长度。 比如说,您正在阅读文件
FileInputStream in = new FileInputStream(new File(soundFile));
load()应该看起来像
sp.load(in.getFD(), start, length, 0);
答案 1 :(得分:0)
迟到总比不到好,因此为了将来参考,Soundpool 每个轨道的缓冲区大小限制为 1Mb。但此限制不适用于文件大小,而是适用于解压缩的原始 PCM 数据。
SoundPool 会将加载的音频解压缩为 PCM 数据,因此它可以立即播放而没有解码延迟。如果您加载的音频被大量压缩,例如 MP3,那么它可能会被放大很多。
您可以使用 Soundpool 播放超过 5 秒的声音(我播放了大约 30 秒的声音)。但是您可能需要修改您的文件。您可以尝试将您的声音文件转换为 ogg,使用 Soundpool 似乎可以提供更好的效果。
另外,进行以下更改:
对于这些更改,您可以使用在线转换器,例如 one。