Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android cmake中调用native.cpp内的ffmpeg.c函数_Ffmpeg_Cmake_Android Ndk - Fatal编程技术网

在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(本机代码)中的示例非常困难,也非常少。现在我决定调用ffmpeg
main()
,并将命令作为参数传递

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(…)函数