问题标签 [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.

0 投票
1 回答
225 浏览

android - 是否可以解码存储在字节数组中的 mp3 数据?

是否可以解码存储在缓冲区中的 mp3 数据?

我知道我可以在 API 版本 14 之后解码到缓冲区。但我一直无法创建一个 SimpleBufferQueue 用作解码器的输入。

这是当前的代码。我已经能够在其他地方获得一个简单的缓冲区队列来提供最终的音频输出,并且可以愉快地为字节数组播放 Wav,所以我知道 opensl/es、文件、平板电脑等没有任何问题。

谢谢大家

0 投票
1 回答
853 浏览

opengl - OpenGL PBO 不适用于 nVidia 显卡

我正在尝试使用 openGL 渲染 RGB 帧。在 CPU 上分配内存时,代码可以正常工作。但是,当我使用像素缓冲区对象的概念在 GPU 上分配内存时,我在渲染帧时遇到了问题。

问题是,显示窗口完全是白色的。当相同的代码在其他显卡上运行时,代码可以正常工作。但是,当我在任何具有 nVidia 显卡的系统上运行它时,都会遇到这个白屏问题。

下面是我的代码:

我已经调试并检查了是否glMapBufferARB返回地址,它返回一个有效地址,即BadPtr那里没有问题。我检查了 3 个系统,有 3 个不同型号的 nVidia 显卡,输出是一样的,就是白屏。

但是,我也尝试了具有其他显卡的系统上的代码,该代码有效。此外,OpenGL版本没有问题。

建议一些更改或可以使上述代码工作的东西。

0 投票
1 回答
205 浏览

android-ndk - (无效)结果是什么;在 android OpenSL 示例中是什么意思?

在 OpenSL ES 的 android 实现中,可以在 android-ndk /samples/native-audio/jni/native-audio-jni.c 中找到以下示例代码

SLResult被定义为 type ,根据SLuint32定义,它是 32 位无符号整数类型。

我的问题是:这条线(void)result;有什么作用?我认为这无济于事,编译器可以优化它。但是,示例中的许多地方都出现了类似的行,我想知道它到底是否具有某种重要性。

0 投票
2 回答
256 浏览

android-ndk - 用于 PC 的 openSL ES 模拟器

我有 openSL ES 为我的 android NDK 工作。有没有办法让我的 openSL ES 代码在 PC 上模拟?如果无法进行仿真,有人可以就最佳选择提供建议。

0 投票
0 回答
179 浏览

android - 使用 opensles,您是否需要为每个要同时播放的 mp3 单独的音频播放器?

我已经看到如何在播放器之间共享输出混合,但我想知道如何在不使用多个播放器的情况下同时播放多个 mp3 文件。

显然,我可以使用第 3 方库(例如 ffmpeg)对 mp3 进行解码,然后自己混合缓冲区流并传递给播放器,但这对于我的需要来说是最重要的。使用 opensles 解码似乎需要一个 FD/URI->BufferQueue 播放器对象,这样就不会改变播放器的数量。

有我缺少的技术吗?唯一的限制是解决方案必须使用 c++ 和 opensles。

0 投票
1 回答
7948 浏览

android - 控制强制扬声器音频的音量

我正在使用 OpenSL ES 播放音频剪辑。在我的代码中,我有

插入耳机时通过扬声器强制音频。它工作正常,但我无法控制音量。在播放剪辑时按下音量按钮会使音量搜索栏出现并移动,但音量不会改变。打电话setVolumeControlStream(AudioManager.STREAM_VOICE_CALL)setVolumeControlStream(AudioManager.STREAM_MUSIC)在玩之前似乎没有帮助。在我的应用程序之外更改任何音量(例如在 Android 设置中)不会影响播放音量。未应用路由时,音量控制在耳机和扬声器上都能正常工作。

我还尝试使用我在另一个答案中找到的代码将音频路由到扬声器

但它不适用于我的 Android 4.3 Nexus 4。无论如何,我需要最兼容的方式。

有任何想法吗?谢谢。

0 投票
1 回答
694 浏览

android - openSL ES for Jelly Bean 4.3 是否支持音频路由切换?

是否可以通过适用于 Android 4.3 的 openSL ES API 获取可用的音频端点(听筒、扬声器、有线耳机、蓝牙耳机)?

还是所有这些东西都是在 Java 级别完成的?

目前的情况是我已经实现了一个 openSL ES 音频驱动程序。驱动程序除了从默认麦克风接收麦克风数据包并将扬声器数据包传送到默认扬声器端点之外什么都不做。

如果可能的话,我想在我的代码中创建几个额外的函数。一个查询端点,另一个设置端点。

0 投票
1 回答
1453 浏览

android - OpenSL ES decode 24bit FLAC

I am trying to decode a FLAC file with 24bit sample format using OpenSL ES on Android. Originally, I had my SLDataFormat_PCM for the SLDataSink setup like this.

This is working well for basically any data format. Luckily the samplesPerSec is not respected (I don't want resampling).

Now I want to support the full bit-depth of a FLAC file with 24bit samples. When using this format, it apparently performs a bit-depth conversion, because once I load the file, and then check the ANDROID_KEY_PCMFORMAT_BITSPERSAMPLE info, it is 16.

When I put bitsPerSample = SL_PCMSAMPLEFORMAT_FIXED_24; or SL_PCMSAMPLEFORMAT_FIXED_32, then OpenSL ES rejects it

Any idea how this is meant to work? Is Android currently restricted to 16 bit int only? I would also accept 32bit float, but I don't suppose that will work either.

0 投票
1 回答
867 浏览

android-ndk - 用于 Android 上 PCM 缓冲区队列的 OpenSL SL_IID_RATEPITCH 和 SL_IID_VOLUME

我在 Android NDK 上使用 PCM 缓冲区队列在 OpenSL ES 中创建了一个多声道音频系统。尽管 Android 文档说支持这两个接口,但我似乎无法让操作系统支持 SL_IID_RATEPITCH 和 SL_IID_VOLUME。下面是我的初始化代码。难道我做错了什么?

0 投票
1 回答
1448 浏览

android - 使用内存中的 openSL 播放 MP3 文件 android NDK

我有我的 android 应用程序,其中使用 FileWrap 打包数据。问题是我想将 mp3 数据包装到 android 文件中并从该内存中播放。我检查了 NDK 中的 nativeaudio 示例,它显示了如何将 MP3 作为资产或文件系统文件播放,但它没有显示我如何播放嵌入到内存中的 MP3。

请帮忙。谢谢。