我想将原始音频缓冲区发送到 C++ 进行音频转码。我有两个选择

  1. 使用管道流
    • 使用直接缓冲区(java.nio)

这些真的是我最好的两个选择吗(人们会推荐哪个?)谢谢!

有帮助吗?

解决方案

NIO 中的直接缓冲区几乎肯定会具有更好的性能。这几乎是直接缓冲区的理想情况。

我不确定你的问题的重点是什么 - 如果你想知道是否还有其他选项,那么答案肯定是(例如,你可以写入一个文件,然后调用外部应用程序来处理它 -或者您可以使用没有直接缓冲区的 JNI)。但是,如果您希望 Java 和 C++ 代码之间有一个紧密耦合的高性能接口,JNI 和直接缓冲区将是可以使用的工具。

其他提示

JNI 很容易搞砸,因此人们往往会抱怨它。但如果做得正确的话,它是一个出色且极其稳定的选择。

您可以使用套接字(接受来自本地的连接),但我猜这在 *nix 系统上会更有效。

如果您不需要实时转码,我会选择缓冲区方法。通过这种方式,您可以更好地进行控制,并且可以确保不会丢失任何字节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top