安卓第一次播放音频时会卡顿

在网上有看到说修改底层代码的,
**将cocos2d-x\cocos\audio\android\AudioPlayerProvider.cpp中的getSystemAPILevel() < 17都改为getSystemAPILevel() >= 17。
这个处理看着就不靠谱,但是这样修改后确实第一次播放音频时不卡了,但是出现的问题是整体性能下降好多,各种掉帧(好像是播放音效多的时候)

顶顶顶,来大佬指引下方向

预加载完播放一次音量为0的音效。

提前播放一次音效也只是把卡顿放在了前面,并没有解决安卓播放卡顿的问题,像我说的红米8a提前播放5,60个音效文件,直接在加载页卡住了差不多7秒,是卡住。。

顶顶顶顶顶顶顶顶顶

没有人遇到这个问题吗,没人解决这个问题吗

顶顶顶顶顶顶顶顶顶

同遇到,暂时没什么好的解决方案

这个问题非常坑,播之前用这个加载一次
jsb[‘AudioEngine’]._preload(soundClip.nativeUrl, () => {

})

我看源码 preload 好像并不能解决这个问题

实际上调用这个就不卡顿了 :rofl:

好的,我试下先,给大佬递茶

菜鸡不敢称大佬 :rofl:

原生音效好像是.cpp文件

楼主解决了么,
我对每个音频文件在游戏初始化的时候都使用了
jsb[‘AudioEngine’]._preload(clip.nativeUrl, () => {
})
const id = cc.audioEngine.play(clip, false, 0.0);
然后再在场景中播放,安卓红米 K30 5G,也是很卡,对比iPhone 手机就无卡顿。哎

写回调里播啊 哥们

大佬,我改成这样了,
游戏启动初始化的时候,对每个音频调用:
const id = cc.audioEngine.play(clip, false, 0.0);
console.log(‘id=’ + id);

游戏中对要播放的音频使用:
jsb[‘AudioEngine’]._preload(clip.nativeUrl, () => {
cc.audioEngine.play(clip, false, 1.0);
});
Creator版本是2.4.3,这样还是卡顿,安卓手机上(红米 K30 5G)还是没有什么改善。大佬是这样写的吗?请您用什么安卓手机测试的?感谢指导

cc.resources.load(url, cc.AudioClip, (err, clip:cc.AudioClip) => {

            jsb['AudioEngine']._preload(clip.nativeUrl, () => {

                cc.audioEngine.playEffect(clip, false);

            })

        })

我是这么写的

那是一样的,只不过我的音效是在用户目录下,游戏初始化时用一个map记录所有音效名和clip的对应关系:
cc.loader.load(fullPathWithSubfix, function (error: Error, clip: cc.AudioClip) {
if (error) {
console.log(“loadAudio error: " + error);
} else {
// console.log(‘clip=’ + JSON.stringify(clip));
console.log(‘fullPathWithSubfix=’ + fullPathWithSubfix);
const arr = fullPathWithSubfix.split(”/");
const fullName = arr[arr.length - 1];
const name = fullName.split(".")[0];
self._map[name] = clip; //记录每个audio对应的cc.AudioClip
const id = cc.audioEngine.play(clip, false, 0.0); //先静音播放一遍,类似让引擎缓存音效
console.log(‘id=’ + id);
}
});
使用的时候,直接用名字播放:
const clip = this._map[nameWithoutSufix];
jsb[‘AudioEngine’]._preload(clip.nativeUrl, () => {
cc.audioEngine.play(clip, false, 1.0);
});

静音播放哪行注释看看