轉載於http://www.cnblogs.com/shaobin0604/archive/2011/08/05/2128619.html
編譯過程參考在 Mac OS X 下使用 Android NDK r5b 編譯 FFmpeg 0.8
1.下載NDK r6和FFmpeg 0.8.1
2.解壓縮
- android-ndk-r6-linux-x86.tar.bz2 解壓到 /home/pekall/opt 目錄下,並將NDK的路徑加入到PATH環境變量中
- ffmpeg-0.8.1.tar.gz 解壓到 /home/pekall/Projects_private/FFmpegPlayer/lib 目錄下
- 將目錄/home/pekall/Projects_private/FFmpegPlayer/lib/ffmpeg-0.8.1 重命名爲/home/pekall/Projects_private/FFmpegPlayer/lib/jni
3.編寫FFmpeg配置腳本
在目錄/home/pekall/Projects_private/FFmpegPlayer/lib/jni下新建腳本文件config.sh,並加上可執行權限。
./configure \
--disable-static \
--enable-shared \
--enable-gpl \
--enable-version3 \
--enable-nonfree \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-avfilter \
--disable-postproc \
--enable-small \
--cross-prefix=/home/pekall/opt/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- \
--enable-cross-compile \
--target-os=linux \
--extra-cflags='-I/home/pekall/opt/android-ndk-r6/platforms/android-9/arch-arm/usr/include' \
--extra-ldflags='-L/home/pekall/opt/android-ndk-r6/platforms/android-9/arch-arm/usr/lib -nostdlib' \
--arch=arm \
--disable-symver \
--disable-debug \
--disable-stripping \
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
以下幾個屬性需要根據ndk安裝的位置做相應的修改
- cross-prefix
- extra-cflags
- extra-ldflags
4.編寫Android.mk文件
可以通過這個鏈接獲得,內容和參考的文件完全相同
5.生成FFmpeg配置文件
打開終端,在/home/pekall/Projects_private/FFmpegPlayer/lib/jni目錄下執行config.sh
6.編譯FFmpeg
打開終端,在/home/pekall/Projects_private/FFmpegPlayer/lib目錄下執行ndk-build,編譯完成之後會在/home/pekall/Projects_private/FFmpegPlayer/lib/libs/armeabi目錄下生成大約5.4M的文件libffmpeg.so