gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-11-01 09:18:43 24 4
gpt4 key购买 nike

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

最佳答案

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

只是关于实现的注释,不要让 Java 在每次你想通过音频时创建一个缓冲区,只需在 Java 中(或通过 JNI)创建一个缓冲区,然后在每次需要更新时 memcpy 到它.

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

关于c++ - Android 从 C++ 端播放原始音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2312542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com