FFMpeg를 사용하는 안드로이드 응용 프로그램을 만들려고합니다. 이를 위해 http://www.ffmpeg.org/olddownload.html에서 FFmpeg 코드 (v 0.8.15)를 다운로드했습니다. 그리고 지침에 따라 코드를 컴파일 http://www.roman10.net/how-to-build-ffmpeg-for-android/안드로이드 플랫폼 용 FFmpeg
결과적으로 .a 파일은 Android/lib 폴더 & .h 파일의 android/include 폴더에 생성되었습니다.
그러나이 기본 제공 FFmpeg 라이브러리 (.a 파일)를 사용하는 원시 코드의 .so 파일을 만들려고하면 정의되지 않은 참조 오류가 발생합니다.
내 프로젝트의 코드 구조가 아래에 나와 있습니다.
프로젝트 경로가이 경로에서 /home/guest/Neeraj_temp/FFMpeg-Example
이다, 나는 두 개의 폴더가 미리 제작 된 폴더에서 & 미리 만들어진 을 JNI 생성, 나는 libswscale.a, libavfilter.a, libavcodec.a, libavformat.a, libavutil.a을 유지 jni 폴더에서 모든 .h 폴더 (libavcodec, libavfilter, libavformat, libavutil, libswscale)를 포함하는 하나의 include 폴더를 유지했습니다.
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'
. 친절하게 솔루션을 제공하십시오. 어떻게하면이 에러가 발생하지 않아야 코드를 구조화해야합니까? & 컴파일 된 코드를 얻으십시오.
감사합니다.
nm 명령으로 검사했는데 & av_log & av_reverse가 libavutil.a에 있습니다. 라인은 다음과 같습니다. - "00000070 T av_log"& "00000200 R av_reverse". 또한 log.o와 matematices.o도 빌드되었는지 확인했습니다. – Neeraj