android7 上播放声音严重卡顿

recruit_2009.mp3 这个文件能够发一下么?

文件在这里,目前所有的音频只要调用的Pcm那个都会卡
recruit_2009.zip (59.2 KB)

@165613676, 这个问题应该在github上最新代码中已经修复了。
由于安卓底层系统解码不稳定而且性能很差,导致没有preload的话播放音效卡顿。

建议升级到https://github.com/cocos2d/cocos2d-x 的v3分支的最新代码尝试一下。

可以这样做:

git clone https://github.com/cocos2d/cocos2d-x.git
cd cocos2d-x
python download-deps.py

拷贝cocos/audio/android目录和external/android-specific目录覆盖到你的游戏工程中,再重新编译打包试试。

[quote=“dumganhar, post:13, topic:44119”]
ndroid-speci
[/quote]在git上的external目录下并没有android-specific目录啊

python download-deps.py
之后就有了

audioengine这个东西能不用就不用,我项目用了audioengine后出现各种兼容性问题,从audioengine一出生到现在就一直没好过,我已经怕了,android平台还是老老实实的用原生的SoundPool吧,稳定性比啥都重要啊!!!

1赞

请问这个错不太明白,另外请问PcmAudioPlayer播放小容量音频的作用是什么呢?用UrlAudioPlayer播放这些小容量音频是不是会出现什么问题?@dumganhar 谢谢。。。

simple那个我开始也用了,但是似乎问题更多呢,因为我们做的这个需要播放大量音效,用simple会经常出现卡屏什么的

你可能用的早期的引擎,我记得某个引擎版本是用clang,后来发现有问题,又切换回gcc了。
你可以修改tools/cocos2d-console/plugins/plugin_compile/build_android.py文件,

    def get_toolchain_version(self, ndk_root, compile_obj):
        # it should be possible to override the toolchain
        if 'NDK_TOOLCHAIN_VERSION' in os.environ:
            return os.environ['NDK_TOOLCHAIN_VERSION']
        return '4.9'

改成强制使用gcc 4.9来编译。

SimpleAudio在Android平台的问题确实也很多,因为里面限制了最大同时播放音频的数量,而且还有各种奇奇怪怪的问题,不过主要问题是cocos没封装好,但是是没有出现严重的兼容性问题的,如果有能力,建议自己去封装SoundPool,自己写的代码,哪里出问题就改哪里。

改成4.9也不行。。还是一样的错误,是不是跟我用的NDK-r9c有关。。:sweat:

有可能,r9c太老了,你换成r10e看看。

搞错了,可以正常编过了,改的位置是application.mk的NDK_TOOLCHAIN_VERSION

@dumganhar ios 用的3.13版本的,声音崩溃,求指教一下 谢谢了:7:
AudioToolbox _CrashIfClientProvidedBogusAudioBufferList + 56
1 AudioToolbox AudioConverterConvertComplexBuffer + 280
2 AudioToolbox AUSpatialMixer::Render(unsigned int&, AudioTimeStamp const&, unsigned int) + 2784
3 AudioToolbox AUBase::DoRenderBus(unsigned int&, AudioTimeStamp const&, unsigned int, AUOutputElement*, unsigned int, AudioBufferList&) + 172
4 AudioToolbox AUBase::DoRender(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int, AudioBufferList&) + 432
5 AudioToolbox AUMethodRender(void*, unsigned int*, AudioTimeStamp const*, unsigned int, unsigned int, AudioBufferList*) + 44
6 AudioToolbox AUInputElement::PullInput(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int) + 140
7 AudioToolbox AUInputFormatConverter2::InputProc(OpaqueAudioConverter*, unsigned int*, AudioBufferList*, AudioStreamPacketDescription**, void*) + 216
8 AudioToolbox AudioConverterChain::CallInputProc(unsigned int) + 412
9 AudioToolbox AudioConverterChain::FillBufferFromInputProc(unsigned int*, CABufferList*) + 148
10 AudioToolbox BufferedAudioConverter::GetInputBytes(unsigned int, unsigned int&, CABufferList const*&) + 180
11 AudioToolbox CBRConverter::RenderOutput(CABufferList*, unsigned int, unsigned int&, AudioStreamPacketDescription*) + 100
12 AudioToolbox BufferedAudioConverter::FillBuffer(unsigned int&, AudioBufferList&, AudioStreamPacketDescription*) + 564
13 AudioToolbox AudioConverterChain::RenderOutput(CABufferList*, unsigned int, unsigned int&, AudioStreamPacketDescription*) + 116
14 AudioToolbox BufferedAudioConverter::FillBuffer(unsigned int&, AudioBufferList&, AudioStreamPacketDescription*) + 564
15 AudioToolbox AudioConverterFillComplexBuffer + 328
16 AudioToolbox AUInputFormatConverter2::PullAndConvertInput(AudioTimeStamp const&, unsigned int&, AudioBufferList&, AudioStreamPacketDescription*, bool&) + 120
17 AudioToolbox AUConverterBase::RenderBus(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int) + 644
18 AudioToolbox AURemoteIO::RenderBus(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int) + 84
19 AudioToolbox AUBase::DoRenderBus(unsigned int&, AudioTimeStamp const&, unsigned int, AUOutputElement*, unsigned int, AudioBufferList&) + 172
20 AudioToolbox AUBase::DoRender(unsigned int&, AudioTimeStamp const&, unsigned int, unsigned int, AudioBufferList&) + 432
21 AudioToolbox AURemoteIO::PerformIO(unsigned int, unsigned int, unsigned int, AudioTimeStamp const&, AudioTimeStamp const&, AudioBufferList const*, AudioBufferList*, int&) + 752
22 AudioToolbox _AURIOCallbackReceiver_PerformIO + 564
23 AudioToolbox __XPerformIO + 104
24 AudioToolbox _mshMIGPerform + 244
25 AudioToolbox _MSHMIGDispatchMessage + 36
26 AudioToolbox AURemoteIO::IOThread::Run() + 312
27 AudioToolbox AURemoteIO::IOThread::Entry(void*) + 12
28 AudioToolbox CAPThread::Entry(CAPThread*) + 84
29 libsystem_pthread.dylib __pthread_body + 240
30 libsystem_pthread.dylib __pthread_body

这个问题是在什么情况下出现的?有没有好的重现方法?

此问题在
https://github.com/cocos2d/cocos2d-x/pull/17500

https://github.com/cocos2d/cocos2d-x/pull/17518
中修复了

:relaxed: thx

我项目是3.14.1的,我把3.15.1的cocos/audio全部覆盖了,也添加了external/android-specific,编译跑起来感觉没有什么变化,没有preload第一次播放音效也是很卡,部分卡一秒才能播放,sigh

测试机是小米6 miui8.5.4.0 稳定版

也参考了这个帖子
http://forum.cocos.com/t/android7-0/44784/2

你是用AudioEngine还是SimpleAudioEngine播放音频?

我用的是play2d的接口,应该就是audioengine吧