Android 从 C++ 端播放原始音频

2024-05-15

我需要能够在 Android 系统的 C++ 端以自定义文件格式传输音频。我正在致力于移植自定义媒体播放器,并且需要能够打开自定义文件并从中传输音频。这很重要,因为我认为从性能角度来看将整个播放器移植到 JAVA 是不可行的,并且通过 JNI 接口移动音频缓冲区我认为速度太慢而无法保持良好的帧速率。我可以通过 OpenGL ES 处理 NDK 端的视频,但音频我不知道如何实现这一点。


我建议您通过 JNI 传递音频并查看它的实际执行情况。我发现 JNI 实际上非常高效(如果实现正确),如果它的速度足以满足您的需要,我不会感到惊讶。

只是关于实现的注释,不要让 Java 在每次要传递音频时都创建一个缓冲区,只需在 Java 中(或通过 JNI)创建一个缓冲区,然后在每次需要更新时将其 memcpy 到其中即可。

另外,您应该注意,Android 上的所有音频类当前都是用 C++ 编写并通过 JNI 运行。如果单向速度足够快(我目前正在开发一款游戏,我们可以在某些帧上将超过 0.5mb 的音频数据从 Java 提交到 AudioTrack),那么它可能不会太糟糕另一个是基本相同的操作,即锁定缓冲区、写入、解锁音频,以及锁定缓冲区、读取、解锁音频类。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 从 C++ 端播放原始音频 的相关文章

随机推荐