Android中受支持的OpenSL ES功能

问题描述 投票:2回答:2

Android应该通过NDK可以通过OpenSL es API支持3D音频。无论多少工作,我都设法通过创建的播放器和输出混音来播放声音。但是,当我尝试实现带有3D位置接口(SL_IID_3DLOCATION常数)的监听器时,该接口对于播放3D声音是必不可少的。但是,当我尝试将常量设置为SL_BOOLEAN_TRUE时,CreateListener方法的结果是传递给LogCat的结果是12。 OpenSL常量SL_RESULT_FEATURE_UNSUPPORTED的值是12。在下面可以找到一小段代码,任何人都可以确认我做错了什么还是该功能确实没有被支持,这意味着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);
android c audio android-ndk opensl
2个回答
2
投票

您可能想看看这个网站:https://developer.android.com/ndk/guides/audio/opensl/opensl-for-android。它显示了什么以及(更重要的是)Android的OpenSL ES API不支持的内容。我还没有使用3D定位功能,但是话又说回来,我还不需要它。

无论如何,也许该站点将为您提供有关此信息的更多信息...


0
投票

当我上周再次查看该问题时,我可能已经找到了解决方案。我在这里用第三方库发布了可能的解决方案:

OpenSLES with 3D audio

也许需要它的人可以验证它是否有效。

© www.soinside.com 2019 - 2024. All rights reserved.