我需要更改音频的音高和时间拉伸(stretch)。为此,我正在使用预构建静态库。当前,我有libZtxAndroid.a静态库和包含函数声明的相应头文件。但是我不知道如何在我的android studio应用程序中加载该库并从Java代码调用本机函数。我浏览了许多链接,并尝试加载该库。但是所有尝试都失败了。这是我上次尝试过的链接https://tariqzubairy.wordpress.com/2012/03/12/use-of-prebuild-static-library-compiled-with-android-toolchain/
另外,我在此应用程序中使用FFMPEG共享库和MP4Parser(https://github.com/sannies/mp4parser)库分别向视频添加水印和合并音频。可以提供任何基础知识帮助吗?
最佳答案
您需要做几件事:
您可以使用android ndk做到这一点。
Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv * env,
jobject thiz)
其中Java_comp_example_hellojni_HelloJni是您的项目名称,您必须从Java开始,假设您的lib名称是libmylib.so:
public class HelloJni {
static {
System.LoadLibrary('mylib');
}
public native stringFromJni();
}
请注意,本机库名称不需要lib前缀和.so后缀。还要注意,您不需要C++的任何头文件,只需从Java加载该库并声明一个本机函数即可。在Java项目使用该库之前,该库应该已经被编译并位于正确的目录中。
加载时要小心:如果使用标准库的共享版本,则还需要在库之前将其添加到Java的static {部分中以进行加载。