Android应该通过可通过NDK访问的OpenSL es API支持3D音频。 这或多或少有效,我设法通过创建的播放器和输出组合播放声音。 但是当我尝试使用3D位置接口(SL_IID_3DLOCATION常量)来实现一个听众时,这是播放3D声音所必需的。 但是当我尝试将常量设置为SL_BOOLEAN_TRUE时,CreateListener方法的结果为12传递给LogCat。 12是OpenSL es常量SL_RESULT_FEATURE_UNSUPPORTED的值。 您可以在下面找到代码的一小部分,任何人都可以确认我是否做错了或者该function是否真的未报告,这意味着OpenSL es实现不支持3D音频?
#define SL_RESULT_FEATURE_UNSUPPORTED ((SLuint32) 0x0000000C) const SLInterfaceID listener_ids[] = {SL_IID_3DLOCATION}; const SLboolean listener_req[] = {SL_BOOLEAN_TRUE}; result = (*engine)->CreateListener(engine, &listenerObject, 1, listener_ids, listener_req); __android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "CREATE: [%i]", result); assert(SL_RESULT_SUCCESS == result); result = (*listenerObject)->Realize(listenerObject, SL_BOOLEAN_FALSE); __android_log_print(ANDROID_LOG_VERBOSE, DEBUG_TAG, "REALIZE: [%i]", result); assert(SL_RESULT_SUCCESS == result);
您可能想看一下这个网站: http : //mobilepearls.com/labs/native-android-api/ndk/docs/opensles/ 。 它显示了什么是(更重要的),OpenSL ES API for Android不支持的内容。 我没有使用过3D位置function,但话说回来,我还没有需要它。
无论如何,也许该网站会为您提供更多相关信息……
上周我再看一下这个问题时,我可能已经找到了解决方法。 我在这里发布了一个可能的第三方库解决方案:
带有3D音频的OpenSLES
也许需要它的人可以validation它是否有效。
以上就是c/c++开发分享Android中支持的OpenSL ESfunction相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/562295.html