在开发一款android平台下的视频播放器,底层解码选择用开源解码库Ffmpeg,需要编译生成静态库。
编译的环境:
ubuntu 12.04 64bit
android-ndk-r9d linux 64bit,下载地址:android ndk下载地址
ffmpeg 0.6.7,下载地址:Ffmpeg 0.6.7 源码下载地址
编译的详细流程如下:
1.下载好android ndk后,将压缩包解压在某一目录下,例如楼主解压在了/home/zk/ndk路径下了,所以楼主的android ndk根目录的绝对路径就是/home/zk/ndk/android-ndk-r9d.
2.同1,楼主在/home/zk/目录下又新建了一个Ffmpeg文件夹,并将下载好的ffmpeg-0.6.7.tar.gz解压到了此处,所以ffmpeg的根目录绝对路径就是/home/zk/Ffmpeg/ffmpeg-0.6.7.
3.在ffmpeg的根目录下新建一个config.sh文件,将如下内容复制到其中(如下内容是ndk的路径和一些ffmpeg编译配置选项,需要大家根据自己的ndk实际路径进行修改,而ffmpeg编译的配置选项大家可以从网上搜索,根据自己需求更改相应参数):
#!/bin/sh export TMPDIR="/tmp/" export NDKROOT="/home/zk/ndk/android-ndk-r9d" PREBUILT=$NDKROOT/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64 ./configure --target-os=linux --arch=arm --cpu=armv7-a --enable-cross-compile --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 -mfpu=neon -mfloat-abi=softfp -I$NDKROOT/platforms/android-9/arch-arm/usr/include" --enable-asm --disable-yasm --enable-static --disable-shared --enable-small --enable-gpl --enable-version3 --enable-nonfree --enable-neon --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-ffprobe --prefix=/home/ffmpeg-android-bin --extra-ldflags="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$NDKROOT/platforms/android-9/arch-arm/usr/lib -L$NDKROOT/platforms/android-9/arch-arm/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-linux-androideabi/4.6/crtbegin.o $PREBUILT/lib/gcc/arm-linux-androideabi/4.6/crtend.o -lc -lm -ldl"
chmod +x config.sh
./config.sh执行完该命令后,会发现生成了config.h 和config.mak文件,这两个文件是之后执行make命令编译时,makefile中所需要的环境变量以及配置选项。
5.最后在终端执行
make执行完后会在ffmpeg根目录下的libavcodec、libavdevice、libavformat、libavutil、libswscale文件夹下有相应的.a静态库文件生成~
Ubuntu下编译Ffmpeg静态库,布布扣,bubuko.com
原文:http://blog.csdn.net/looong2b/article/details/22645961