在android cmake中调用native.cpp内的ffmpeg.c函数
我使用在android cmake中调用native.cpp内的ffmpeg.c函数,ffmpeg,cmake,android-ndk,Ffmpeg,Cmake,Android Ndk,我使用cmakelists.txt文件生成并附加了libavcodec.so、libavdevice.so、libavfilter.so、libavformat.so、libavutil.so、libswresample.so、libswscale.so add_library( # Sets the name of the library. native-lib # Sets the library as a shared library. S
cmakelists.txt
文件生成并附加了libavcodec.so、libavdevice.so、libavfilter.so、libavformat.so、libavutil.so、libswresample.so、libswscale.so
add_library( # Sets the name of the library.
native-lib
# Sets the library as a shared library.
SHARED
# Provides a relative path to your source file(s).
native-lib.cpp )
#Add an example of so library.
# avdevice
add_library(avdevice
SHARED
IMPORTED)
set_target_properties(avdevice
PROPERTIES IMPORTED_LOCATION
${ARM_DIR}/${ANDROID_ABI}/lib/libavdevice.so)
.
.
.
etc
在native lib.cpp
文件中,我现在可以通过调用此函数avformat\u open\u input()
编辑视频。正如我所看到的,ffmpeg for c functions api(本机代码)中的示例非常困难,也非常少。现在我决定调用ffmpegmain()
,并将命令作为参数传递
ffmpeg -i input.mp4
我能看到很多人只用这种方法。我不知道这两种方法之间的确切区别,但我认为如果我使用c函数api(本机代码),我可以定制更多
现在我只有库的共享对象,比如libavcodec.so
。如何附加ffmpeg.c
文件,我认为它需要config.h
文件,我认为我也应该为每个环境构建该文件(arm64-v8a、armeabi-v7a)。由于我只有< >原生.CPP < /Cord> C++文件,我如何附加代码> FFMPEG.C、CONFIG.H./COD>文件?这样我就可以通过
run(new String[]{
"ffmpeg", "-h"
});
-------------------------------------
JNIEXPORT void JNICALL Java_uk_co_halfninja_videokit_Videokit_run(JNIEnv *env, jobject obj, jobjectArray args)
{
int i = 0;
int argc = 0;
char **argv = NULL;
jstring *strr = NULL;
main(argc, argv);
我可以看到这个git回购。他们首先生成了.so文件并附加了ffmpeg.c
,这是他们从ffmpeg/fftools
目录中获取的,我想是通过使用Android.mk
文件。
github.com/halfninja/android-ffmpeg-x264/blob/master/Project/jni/videokit/ffmpeg.c
因为我有cmake,我想我必须用不同的方法来做。我很困惑,不明白它是怎么工作的。任何知道的人都可以帮忙!谢谢所以你想把ffmpeg链接成一个共享库,然后调用它的
main(…)
函数?是的,我想把ffmpeg链接成ffmpeg。所以
然后调用它的main(…)函数