问题标签 [opensl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - Supported OpenSL ES Features in Android
Android is supposed to support 3D audio via the OpenSL es API which is accesible via the NDK. That more or less works, I managed it to play sound via a created player and an output mix. But when I try to realise a listener with a 3D location interface (SL_IID_3DLOCATION constant) which is mandatory for playing 3D sound. But when I try to set the constant to SL_BOOLEAN_TRUE the result of the CreateListener method is 12 as passed to the LogCat. 12 is the value of the OpenSL es constant SL_RESULT_FEATURE_UNSUPPORTED. Below you can find a short part of the code, can anyone confirm if I do anything wrong or if the feature really is unsopported, meaning that the OpenSL es implementation does not support 3D audio?
android - 是否需要释放来自 OpenSL ES 音频播放器的已完成缓冲区?
只是为了确认。当通过适用于 Android 的 OpenSL ES 创建的音频播放器完成播放缓冲区时,垃圾收集器会自动释放该缓冲区吗?还是我需要自己释放缓冲区?
如果是后者,我可以使用一些帮助。但就目前而言,在我被告知我需要自己做之前,我不会发布任何代码......
android - 适用于 Android 的 OpenSL ES 教程
我一直在尝试使用可用于使用 android 2.3 进行本机音频的 OpenSL ES 库,但似乎头文件和规范的 600 页 pdf 是唯一可用的文档。
我应该在哪里寻找示例、教程或功能的简要概述?
android - 在 android 上以本机代码捕获/呈现音频
我正在研究如何消除我对如何在 Android 平台上使用本机代码捕获和呈现音频的困惑。我听说有一个名为 OpenSL 的音频 API。是否有关于如何使用它的推荐指南和教程?
此外,是否有任何适用于 OpenSL 的好的音频包装器,例如 OpenAL 包装器之类的?我已经在其他平台上使用 OpenAL 开发了音频部分,因此重用代码会很好。
OpenSL 是否有限制——比如必须在 Java 代码中完成的事情?
OpenSL 与 OpenAL 有何不同?
谢谢!
audio - 适用于 Windows、Mac 和 iOS 的音频库?OpenAL/OpenSL
我用 OpenGL 编写了一个桌面/iOS 游戏,并想播放音频文件(mp3 或 wav)。我已经使用过 CoreAudio 和 AudioQueues,但现在我需要一些也适用于 Windows(可能还有 Linux)的东西。
到目前为止,我已经看到:
- 开放式
- 开放式SL
我只需要真正的基本功能——比如“playSound(file)”和“isPlaying(file)”——没有 3D 声音、效果等等……OpenAL 和 OpenSL 都来自 khronos——所以我真的没有区别(是的,它们是 2 个不同的图书馆思想)。
什么是最简单的跨平台灵魂?我可以用其中一个代码编写在 iPhone 和类似的台式电脑上运行的代码吗?
android - 在 Android 上使用 OpenSL 进行音效混合
我目前正在通过 OpenSL 在 Android 上实现音效混合。我有一个初始实施,但我遇到了一些问题。
我的实现如下:
1) 对于每个音效,我创建了几个 AudioPlayer 对象(每个同步声音一个),这些对象使用一个 SLDataLocator_AndroidFD 数据源,该数据源又引用一个 OGG 文件。例如,如果我有一个快速连续播放的开枪声音(我们称之为 gun.ogg),我使用大约 5 个 AudioPlayer 对象,它们引用相同的 gun.ogg 音频源和相同的 outputmix 对象。
2) 当我需要播放该音效时,我会搜索我创建的所有 AudioPlayer 对象,并找到一个当前不处于 SL_PLAYSTATE_PLAYING 状态的对象并使用它来播放效果。
3) 在播放剪辑之前,我使用 SLPlayItf::SetPosition 寻找它的开头。
到目前为止,这一切正常,但是在快速连续播放声音时会出现一些噼啪声。我在 Android NDK 新闻组上读到,Android 上的 OpenSL 在切换数据源方面存在问题。有没有人遇到过这个问题?
我还想知道是否有其他人看到或想出了在 Android 上用于 OpenSL 的混音方法。如果是这样,您的方法与我的不同吗?关于噼啪声有什么建议吗?
我已经在 Internet 上搜索 OpenSL 文档和示例代码,但是关于混音的内容并不多(仅加载我已经弄清楚的内容)。任何帮助将不胜感激。
android - 关于缓冲区中填充的数据大小
我的项目需要低延迟音频,Android 2.3 支持 OpenSL ES。我已经阅读了文档和示例代码,并决定使用 Android 简单缓冲区队列来进行播放和记录。现在,我尝试编写一个简单的应用程序来进行测试。
但是,我对录制有一些疑问。如果我在记录时设置记录器停止,如果没有填满,我如何知道最后一个缓冲区中填充的确切字节数?
在 1.1 版本中,回调函数有一些关于缓冲区及其填充数据的参数,但在 1.0.1 版本中没有这些参数。
有什么办法可以得到这些信息吗?
任何建议将不胜感激!
android - 在模拟器中使用 OpenSL ES 进行录制
我正在开发一个使用 OpenSLES 进行音频录制和播放的应用程序。此时,该应用类似于 JNI 示例原生音频应用。一个问题是,当程序尝试录制时,它在我的模拟器中出现以下错误,尽管它在真实设备中很好。
这就是我收到该错误的那一行。
当然,我用音频记录设置了 AVD,并在我的 Manifest 中播放 true 和指定以下内容。
我还需要做什么才能消除上述错误?
android - 适用于 PC 的 OpenSL 教程 ES(非 Android)
我希望在不涉足整个 Android 业务的情况下开始学习 OpenSL ES 的基础知识。是否没有像 OpenAL 那样描述设置 OpenSL 的过程的教程?
我正在使用 Ubuntu。