【问题标题】:How to build ffmpeg in android app?如何在android应用程序中构建ffmpeg?
【发布时间】:2014-05-01 18:04:02
【问题描述】:

通过以下步骤成功构建ffmpeg后

  http://stackoverflow.com/questions/22471514/ffmpeg-build-output-is-not-showing

  Now I have copy include and all .a file into my JNI folder. and my Android.mk 
  file is as:-



      LOCAL_PATH := $(call my-dir)

        include $(CLEAR_VARS)

        LOCAL_MODULE    := ffmpegutils
       LOCAL_SRC_FILES := tutorial02.c

      LOCAL_C_INCLUDES := $(LOCAL_PATH)/include
      LOCAL_LDLIBS := -L$(NDK_PLATFORMS_ROOT)/$(TARGET_PLATFORM)/arch-arm/usr/lib -L$(LOCAL_PATH) -lavformat -lavcodec  -lavfilter -lavutil -lswscale -llog -ljnigraphics -lz -ldl -lgcc

include $(BUILD_SHARED_LIBRARY)

但是我的项目给出的错误是:-

     Description    Resource    Path    Location    Type
make: *** [obj/local/armeabi/libffmpegutils.so] Error 1 MainActivity            C/C++ Problem
undefined reference to 'ANativeWindow_unlockAndPost'    MainActivity        line 231, external location: /home/kiwitech/Documents/development/tools/ndk/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/ffmpegutils/tutorial02.o: in function decodeAndRender:jni/tutorial02.c   C/C++ Problem
undefined reference to 'ANativeWindow_lock' MainActivity        line 222, external location: /home/kiwitech/Documents/development/tools/ndk/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/ffmpegutils/tutorial02.o: in function decodeAndRender:jni/tutorial02.c   C/C++ Problem
undefined reference to 'ANativeWindow_release'  MainActivity        line 150, external location: /home/kiwitech/Documents/development/tools/ndk/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/ffmpegutils/tutorial02.o: in function naSetSurface:jni/tutorial02.c  C/C++ Problem
undefined reference to 'ANativeWindow_setBuffersGeometry'   MainActivity        line 147, external location: /home/kiwitech/Documents/development/tools/ndk/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/ffmpegutils/tutorial02.o: in function naSetSurface:jni/tutorial02.c  C/C++ Problem
undefined reference to 'ANativeWindow_fromSurface'  MainActivity        line 145, external location: /home/kiwitech/Documents/development/tools/ndk/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/arm-linux-androideabi/bin/ld: ./obj/local/armeabi/objs/ffmpegutils/tutorial02.o: in function naSetSurface:jni/tutorial02.c  C/C++ Problem

请任何人帮助我。

【问题讨论】:

    标签: android android-ndk ffmpeg


    【解决方案1】:

    您也必须链接到 android 库,因此将 -landroid 添加到您的 LOCAL_LDLIBS。

    $NDK/docs下的STABLE-APIS.html文档说明:

    所有对应的功能都由API level 9自带的“libandroid.so”库版本提供。要使用它,使用如下: LOCAL_LDLIBS += -landroid

    【讨论】:

    • 请问哪个android库可以修改我的.mk文件
    • 嗨,请描述原因,因为它的工作。非常感谢
    • @SandeepTiwari 你有一个链接器错误,表明它找不到这些符号中的任何一个,所以你需要找出哪个 NDK 库提供了这些函数。一个好的起点总是 $NDK/docs 目录中的文档 STABLE-APIS.HTML。阅读“Android 原生应用程序 API”部分,您将找到问题的答案。
    猜你喜欢
    • 1970-01-01
    • 2014-04-08
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多