SoundPool播放多个文件,无法正常播放的问题

每个设备都有32个活动AudioTrack对象的硬限制,但是这些并不会使得一个应用程序使用,所以同时播放的数目过多久无法创建Track,就无法播放

11 604-1182/? E/AudioFlinger: getNextBuffer, track(0xf0c7f880) get null buffer, mState 6, mFillingUpStatus 2
1621324896.153 604-1188/? E/AudioFlinger: no more track names available
1621324896.153 604-1188/? E/AudioFlinger_Threads: createTrack_l() uid 10070 pid 13573 create track fail
1621324896.153 604-1188/? E/AudioFlinger_Threads: createTrack_l() initCheck failed -12; no control block?
1621324896.153 13573-13645/com.kangwang.word E/AudioTrack: AudioFlinger could not create track, status: -12
1621324896.154 13573-13645/com.kangwang.word E/SoundPool: Error creating AudioTrackx


修改方法:
1.去修改底层代码
2.soundpool的stop方法,会释放掉与本地相关的资源
AudioTrack大于限制就无法播放,那么久将不再使用的音效stop掉。

还有一个思路,没有试过,自己创建AndroidTrack,然后将sound文件里面的数据解码处理,让AudioTarck播放,就是比较麻烦(可以使用ffmpeg解码)。

posted @ 2021-05-18 16:09  kwdeep  阅读(421)  评论(0编辑  收藏  举报