在 Windows 上在 Java 到 C++ 之间发送数据?
题
我想将原始音频缓冲区发送到 C++ 进行音频转码。我有两个选择
- 使用管道流
- 使用直接缓冲区(java.nio)
这些真的是我最好的两个选择吗(人们会推荐哪个?)谢谢!
解决方案
NIO 中的直接缓冲区几乎肯定会具有更好的性能。这几乎是直接缓冲区的理想情况。
我不确定你的问题的重点是什么 - 如果你想知道是否还有其他选项,那么答案肯定是(例如,你可以写入一个文件,然后调用外部应用程序来处理它 -或者您可以使用没有直接缓冲区的 JNI)。但是,如果您希望 Java 和 C++ 代码之间有一个紧密耦合的高性能接口,JNI 和直接缓冲区将是可以使用的工具。
其他提示
JNI 很容易搞砸,因此人们往往会抱怨它。但如果做得正确的话,它是一个出色且极其稳定的选择。
您可以使用套接字(接受来自本地的连接),但我猜这在 *nix 系统上会更有效。
如果您不需要实时转码,我会选择缓冲区方法。通过这种方式,您可以更好地进行控制,并且可以确保不会丢失任何字节。
不隶属于 StackOverflow