【发布时间】:2014-04-29 17:43:34
【问题描述】:
我正在尝试创建一个使用 FFMpeg 的 android 应用程序。为此,我从http://www.ffmpeg.org/olddownload.html 下载了 FFmpeg 代码(v 0.8.15)。并按照http://www.roman10.net/how-to-build-ffmpeg-for-android/的说明编译代码
因此,Android/lib 文件夹中生成了 .a 文件,android/include 文件夹中生成了 .h 文件。
但是,当我尝试创建使用此预构建 FFmpeg 库(.a 文件)的本机代码的 .so 文件时,它会给出未定义的引用错误。
请在下面找到我的项目的代码结构。
项目路径为/home/guest/Neeraj_temp/FFMpeg-Example
在这条路径上,我创建了两个文件夹 jni & prebuilt 在预建文件夹中,我保留了 libavfilter.a、libavcodec.a、libavformat.a、libavutil.a、libswscale.a 在 jni 文件夹中,我保留了一个包含所有 .h 文件夹(libavcodec、libavfilter、libavformat、libavutil、libswscale)的包含文件夹。
api-example.c 文件也保存在使用 FFmpeg 的 API 的 jni 文件夹中。 & 一个 Android.mk 文件在 jni 文件夹中。
Android.mk:-
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libFFmpeg
LOCAL_C_INCLUDES := $(LOCAL_PATH)/FFMpeg/include
LOCAL_SRC_FILES := api-example.c
LOCAL_LDLIBS += -L$(LOCAL_PATH)/../prebuilt -lavfilter -lavutil -lavformat -lavcodec -lswscale
include $(BUILD_SHARED_LIBRARY)
错误:
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wavpack.c:689: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wavpack.o): In function `wv_unpack_stereo':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wavpack.c:604: undefined reference to `av_log'
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wavpack.c:608: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wavpack.o):/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wavpack.c:1215: more undefined references to `av_log' follow
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wmavoice.o): In function `synth_block_fcb_acb':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wmavoice.c:1359: undefined reference to `av_memcpy_backptr'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wmavoice.o): In function `synth_frame':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wmavoice.c:1441: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wmavoice.o): In function `synth_superframe':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wmavoice.c:1765: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wmavoice.o): In function `wmavoice_decode_packet':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wmavoice.c:1919: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wmavoice.o): In function `wmavoice_decode_init':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wmavoice.c:350: undefined reference to `av_log'
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wmavoice.c:373: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wmavoice.o):/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wmavoice.c:397: more undefined references to `av_log' follow
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(wnv1.o): In function `decode_frame':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/wnv1.c:81: undefined reference to `av_reverse'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(ws-snd1.o): In function `ws_snd_decode_frame':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/ws-snd1.c:70: undefined reference to `av_log'
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/ws-snd1.c:83: undefined reference to `av_log'
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/ws-snd1.c:79: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(xan.o): In function `xan_decode_frame':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/xan.c:568: undefined reference to `av_log'
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/xan.c:551: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(xan.o):/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/xan.c:515: more undefined references to `av_log' follow
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(xan.o): In function `xan_unpack':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/xan.c:178: undefined reference to `av_memcpy_backptr'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(xl.o): In function `decode_frame':
/home/guest/Neeraj_temp/ffmpeg-0.8.15/libavcodec/xl.c:60: undefined reference to `av_log'
/home/guest/Neeraj_temp/FFMpeg-Example/jni/../prebuilt/libavcodec.a(xsubdec.o): In function `decode_frame'
我已经阅读了很多博客,但仍然无法获得解决方案。请给我解决方案。我需要如何构建不应该出现这些错误的代码并编译代码。
谢谢。
【问题讨论】: