Android android-ndk-r8b 编译 FFMPEG 2.5

来源:互联网 发布:单片机开发视频 编辑:程序博客网 时间:2024/05/17 06:41

测试机器:

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文件,文件内容如下:

********************************

#!/bin/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 应用程序。


0 0
原创粉丝点击