测试机器:
Vmware9.0 + Fedora10
1.创建/opt/Qt4Android目录
2.下载android-ndk-r8b-linux-x86.tar.bz2,并解压到/opt/Qt4Android
3.下载ffmpeg-2.5.tar.bz2,并解压到/opt/Qt4Android
4.配置ffmpeg
a.cd ffmpeg-2.5 进入/opt/Qt4Android/ffmpeg-2.5目录
创建config.sh文件,文件内容如下:
********************************
export PREBUILT=/opt/Qt4Android/android-ndk-r8b/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86
export PLATFORM=/opt/Qt4Android/android-ndk-r8b/platforms/android-14/arch-arm
export TMPDIR=/opt/Qt4Android/ffmpeg_android/tmp
./configure \
--target-os=linux \
--arch=arm \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-avfilter \
--disable-postproc \
--disable-swresample \
--disable-avresample \
--disable-symver \
--disable-debug \
--disable-stripping \
--disable-yasm \
--disable-asm \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-doc \
--enable-static \
--disable-shared \
--enable-cross-compile \
--prefix=/opt/Qt4Android/ffmpeg_android \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--nm=$PREBUILT/bin/arm-linux-androideabi-nm \
--extra-cflags="-fPIC -DANDROID -I$PLATFORM/usr/include" \
--extra-ldflags="-L$PLATFORM/usr/lib -nostdlib"
sed -i 's/HAVE_LRINT 0/HAVE_LRINT 1/g' config.h
sed -i 's/HAVE_LRINTF 0/HAVE_LRINTF 1/g' config.h
sed -i 's/HAVE_ROUND 0/HAVE_ROUND 1/g' config.h
sed -i 's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g' config.h
sed -i 's/HAVE_TRUNC 0/HAVE_TRUNC 1/g' config.h
sed -i 's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g' config.h
sed -i 's/HAVE_CBRT 0/HAVE_CBRT 1/g' config.h
sed -i 's/HAVE_CBRTF 0/HAVE_CBRTF 1/g' config.h
sed -i 's/HAVE_ISINF 0/HAVE_ISINF 1/g' config.h
sed -i 's/HAVE_ISNAN 0/HAVE_ISNAN 1/g' config.h
sed -i 's/HAVE_SINF 0/HAVE_SINF 1/g' config.h
sed -i 's/HAVE_RINT 0/HAVE_RINT 1/g' config.h
sed -i 's/#define av_restrict restrict/#define av_restrict/g' config.h
***********************************
b.文件config.sh加上可执行选项,chmod 777 config.sh
c.执行配置文件
./config.sh
过程可能会有告警信息,可以忽略,如果是错误信息就需要处理了。
d. 执行make ,编译ffmpeg2.5
编译时出现了错误信息,错误处理
注释/opt/Qt4Android/android-ndk-r8b/platforms/android-14/arch-arm/usr/include/stdlib.h文件,
54行 extern char *getenv(const char *);
修改/opt/Qt4Android/ffmpeg-2.5/libavutil/time_internal.h文件,
26行static inline struct tm *gmtime_r(const time_t* clock, struct tm *result) 整个函数注释
37行static inline struct tm *localtime_r(const time_t* clock, struct tm *result)整个函数注释
编译成功。
e.执行make install ,安装ffmpeg2.5的头文件和静态库文件到/opt/Qt4Android/ffmpeg_android。
编译好的库文件和头文件可以用来开发android 应用程序。