willli666 / ffmpeg-android-library-compile

modified from WritingMinds/hiteshsondhi88 ffmpeg-android
Other
1 stars 5 forks source link

How to build armeabi ? #1

Open devillee opened 8 years ago

devillee commented 8 years ago

Hi , how to build armeabi for this ? I use your script built the ffmpeg all success,but failed in ndk build. Hope you can give me some advices.

The follow is the error :

E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(allformats.o): in function av_register_all:allformats.c(.text+0x54): error: undefined reference to 'avcodec_register_all' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(mov.o): in function mov_read_dec3:mov.c(.text+0x3d80): error: undefined reference to 'avpriv_ac3_channel_layout_tab' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(mov.o): in function mov_read_dac3:mov.c(.text+0x3ee0): error: undefined reference to 'avpriv_ac3_channel_layout_tab' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(movenc.o): in function mov_write_header:movenc.c(.text+0xe6e4): error: undefined reference to 'avpriv_pix_fmt_bps_mov' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(movenc.o): in function mov_write_header:movenc.c(.text+0x10508): error: undefined reference to 'avpriv_pix_fmt_bps_mov' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function free_stream:utils.c(.text+0x24c): error: undefined reference to 'av_parser_close' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function update_initial_timestamps.isra.14:utils.c(.text+0xc44): error: undefined reference to 'avpriv_h264_has_num_reorder_frames' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function try_decode_frame:utils.c(.text+0x1080): error: undefined reference to 'avpriv_h264_has_num_reorder_frames' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function compute_pkt_fields:utils.c(.text+0x3268): error: undefined reference to 'avpriv_h264_has_num_reorder_frames' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function parse_packet:utils.c(.text+0x3788): error: undefined reference to 'av_parser_parse2' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function parse_packet:utils.c(.text+0x4830): error: undefined reference to 'avpriv_h264_has_num_reorder_frames' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function parse_packet:utils.c(.text+0x4ce8): error: undefined reference to 'av_parser_close' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function ff_read_frame_flush:utils.c(.text+0x500c): error: undefined reference to 'av_parser_close' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function read_frame_internal:utils.c(.text+0x9c88): error: undefined reference to 'av_parser_init' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function avformat_find_stream_info:utils.c(.text+0xb46c): error: undefined reference to 'av_parser_init' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function avformat_find_stream_info:utils.c(.text+0xc99c): error: undefined reference to 'avcodec_pix_fmt_to_codec_tag' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function avformat_find_stream_info:utils.c(.text+0xc9a4): error: undefined reference to 'avpriv_get_raw_pix_fmt_tags' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function avformat_find_stream_info:utils.c(.text+0xd0a4): error: undefined reference to 'av_parser_close' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function ff_stream_add_bitstream_filter:utils.c(.text+0x10f94): error: undefined reference to 'av_bitstream_filter_init' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function ff_stream_add_bitstream_filter:utils.c(.text+0x11024): error: undefined reference to 'av_bitstream_filter_close' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(utils.o): in function av_apply_bitstream_filters:utils.c(.text+0x1119c): error: undefined reference to 'av_bitstream_filter_filter' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(isom.o): in function ff_mp4_read_dec_config_descr:isom.c(.text+0x518): error: undefined reference to 'avpriv_mpeg4audio_get_config' E:/develope/android-ndk-r10b/toolchains/arm-linux-androideabi-4.6/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld.exe: jni/prebuilt/libavformat.a(isom.o): in function ff_mp4_read_dec_config_descr:isom.c(.text+0x5fc): error: undefined reference to 'avpriv_mpa_freq_tab'

willli666 commented 8 years ago

I only run this on Ubuntu, not windows. The script is very likely to only run on Linux because I may hardcode the environment in it.

devillee commented 8 years ago

Thank you for your reply ! I build this in ubuntu , and I got some of .a file like libavcodec.a libavformat.a etc.. and I want to build this static lib with ndk in Windows and get one .so file in Android. this is my make file in android ndk:

LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_C_INCLUDES+= $(LOCAL_PATH)/include LOCAL_MODULE := libffmpegutil
LOCAL_SRC_FILES := com_android_concox_FFmpeg.c
LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid -lm -pthread LOCAL_LDLIBS +=$(LOCAL_PATH)/prebuilt/libx264.a LOCAL_LDLIBS +=$(LOCAL_PATH)/prebuilt/libfdk-aac.a LOCAL_LDFLAGS+=$(LOCAL_PATH)/prebuilt/libavformat.a LOCAL_LDFLAGS+=$(LOCAL_PATH)/prebuilt/libavfilter.a LOCAL_LDFLAGS+=$(LOCAL_PATH)/prebuilt/libavcodec.a LOCAL_LDFLAGS+=$(LOCAL_PATH)/prebuilt/libswscale.a LOCAL_LDFLAGS+=$(LOCAL_PATH)/prebuilt/libavutil.a LOCAL_LDFLAGS+=$(LOCAL_PATH)/prebuilt/libswresample.a LOCAL_LDFLAGS+=$(LOCAL_PATH)/prebuilt/libpostproc.a include $(BUILD_SHARED_LIBRARY)

after ndk-build , I really got a ffmpegutil.so file

But when i use aac encoder , I got en error -22 belows: codec id is AV_CODEC_ID_AAC int ret = avcodec_open2(c, codec, &opt)

seems like that ffmpeg or *.a file not link libfdk-aac correctly.

I have test for many ffmpeg with x264 aac script on Google, github and stackoverflow But not one of them is ok. Wish you can give me some advice about how to build a ffmpeg with x264 and aac NDK *.so file. Thank you very much!