您的位置:首页 > 其它

编译ffmpeg问题整理

2015-11-09 11:15 176 查看
export TMPDIR=F:/xxx/FFmpeg-master/temp

export NDK=D:/android-ndk-r9d-windows-x86_64/android-ndk-r9d

export PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.6/prebuilt

export PLATFORM=$NDK/platforms/android-8/arch-arm

export PREFIX=F:/xxx/FFmpeg-master

export INCLUDE_DIR=F:/xxx/FFmpeg-master/include
export LIB=F:/xxx/FFmpeg-master/elib   

创建temp在cygwin下 chomd 777 temp

./configure --target-os=linux --prefix=$PREFIX \

--enable-cross-compile \

--enable-runtime-cpudetect \

--disable-asm \

--arch=arm \

--cc=$PREBUILT/windows-x86_64/bin/arm-linux-androideabi-gcc \

--cross-prefix=$PREBUILT/windows-x86_64/bin/arm-linux-androideabi- \

--disable-stripping \

--nm=$PREBUILT/windows-x86_64/bin/arm-linux-androideabi-nm \

--sysroot=$PLATFORM \

--enable-nonfree \

--disable-everything \

--enable-version3 \

--enable-gpl \

--disable-doc \

--enable-avresample \

--enable-demuxer=rtsp \

--enable-muxer=rtsp \

--enable-muxer=mp4 \

--enable-demuxer=mp4 \

--enable-encoders \

--enable-decoders \

--disable-ffplay \

--disable-ffserver \

--enable-ffmpeg \

--disable-ffprobe \

--enable-neon   \

--enable-protocol=file \

--enable-hwaccels \

--enable-zlib \

--disable-devices \

--enable-avdevice \

--enable-avfilter \

--enable-filter=movie \

--enable-avfilter \

--enable-filter=tnegate \

--disable-shared \

--enable-static \

--extra-cflags="-fPIC -DANDROID -D__thumb__ -mthumb -Wfatal-errors -Wno-deprecated -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a" \

--extra-ldflags="-L${LIB}"

make -j4 install

执行顺序:先export  configure make 

libavfilter/libavfilter.a

D:\android-ndk-r9d-windows-x86_64\android-ndk-r9d\toolchains\arm-linux-androideabi-4.6\prebuilt\windows-x86_64\bin\arm-linux-androideabi-ranlib.exe: '-D': No such file

解决办法:改掉config.mak 的 

RANLIB=D:/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/windows/bin/arm-linux-androideabi-ranlib -D 改成-t

没有vector<char *> argv 没有argv.data() member 则改为 &argv[0]

将.a文件转化为 txt文件的命令

 nm libavfilter.a>1.txt

config.log 报这个错误Unable to create temporary file in E:/ffpmeg/FFmpeg-master/temp.  是没有给temp创建权限 chmod 777 temp

将多个a文件编译成so文件

将生成include下边的所有文件拷贝到jni下边,将lib也拷贝到jni下

编写android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := ffmpeg

LOCAL_ARM_MODE := arm

#LOCAL_ALLOW_UNDEFINED_SYMBOLS := true

LOCAL_PRELINK_MODULE := false

LOCAL_CPPFLAGS := -UBANANA -DBANANA=300 -DLINUX -DANDROID

STL_PATH := \

        $(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/libs/armeabi-v7a/include \

   

LOCAL_C_INCLUDES := \
$(NDK_ROOT)/sources/cxx-stl/gnu-libstdc++/4.8/include \

LOCAL_LDLIBS := -ldl -llog -lz  -lm  -L$(STL_PATH) 

LOCAL_CFLAGS := -D__STDC_CONSTANT_MACROS -Wl,-Map=test.map -g

# -lUtils                 

LOCAL_LDFLAGS += -L$(LOCAL_PATH)/lib \
-lavformat
\
-lavfilter              \
-lavcodec \
-lswresample            \
-lswscale               \
-lavutil
\
 

LOCAL_C_INCLUDES+ := \
$(LOCAL_PATH)/libavutil
\
$(LOCAL_PATH)/libavformat
\
$(LOCAL_PATH)/libavcodec
\
$(LOCAL_PATH)/libavfilter
\
$(LOCAL_PATH)/libswresample
\
$(LOCAL_PATH)/libswscale
\

LOCAL_SRC_FILES := cmdutils.c \

                   ffmpeg_filter.c \

                   ffmpeg_opt.c \

                   ffmpegi.cpp \
  ffmpegx.c \

                   FFmpegJni.cpp \

                   

include $(BUILD_SHARED_LIBRARY)

Application.mk

APP_ABI := armeabi

# mips x86 armeabi-v7a

APP_STL :=gnustl_static

APP_PLATFORM:=android-15

NDK_TOOLCHAIN_VERSION = 4.8
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: