同时播放同一个多个长音效崩溃

期待你们早日确定并解决。

你好啊,我这也遇到了iOS崩溃,TF的崩溃是显示在OpenAL,咱们这是一个问题吗? 我也是3.8.3CocosGame-2025-11-17-164947.zip (9.0 KB)

是一个问题吗? 我这也遇到了 iOS音频的崩溃 版本 3.8.3 CocosGame-2025-11-17-164947.zip (9.0 KB)

看着是,可以尝试按照我改的试试

您意思是您已经解决了这个问题了吗? 如果解决了,还望大佬指点一下怎么解决的。 还是说按照您给的必现的方式复现

这是他的连接…

感谢,的确是这个问题,不闪退了

感谢大佬,就是这个问题,已经解决了

1赞

这个是要改.mm文件吗
mac os 怎么改源码啊 求教

下载Cocos的引擎代码,项目里可以指定的,在设置里。让然后修改上面大佬说的 C++的文件

mac os 修改完原生代码 也是点击 编译引擎吗 还是说 自定义引擎代码

3.8.8 也崩在这里了 :confused:

2赞


我是这个崩溃

看了你的帖子,你这个崩溃应该在debug模式才有,release应该是会进判断。

使用3.8.7的版本,出现了博主反馈的问题,我这边报野指针,roratebuffer闪退,问题应该是当播放一个大音频cocos会开一个线程来单独解码,不卡主线程,在解码的过程,音频被释放了,解码线程没同步,当解码线程解码的过程访问到野指针了就闪退了

按照我下面回复的试下

引用下大佬的解决方案:https://forum.cocos.org/uploads/default/original/3X/d/d/dd0b23e3442e6f0a06661123d2145781c9ff0ea3.png

将 AudioPlayer.mm的 destroy方法中

#if CC_TARGET_PLATFORM == CC_PLATFORM_IOS 改为 #if CC_PLATFORM == CC_PLATFORM_IOS

原理: 音效缓冲区的id在析构函数中实际是被释放了,而_alSource 引用的的缓冲区id没有出队列也就是没有移除引用。而 _alSource资源会被重复使用,再次使用时有可能使用到已经被释放的缓冲区id导致崩溃。
之前提供的方法是 检测缓冲区id的有效性,也可避免崩溃。

1赞

我两处都加上了。

没懂,我没看到release有这个宏,我是3.8.8

改的是C++代码呀,不需要编译引擎,最后xcode编译打包的时候会自己编译C++代码