編譯環(huán)境
- Ubuntu14.04
- Ffmpeg2.5.2
- Anroid-ndk-r9d-Linux-x86_64
編譯前的準(zhǔn)備
查看ubuntu的版本是32位還是64位 uname -a
android-ndk需要和ubuntu版本位數(shù)保持一致
編譯步驟
-
下載ndk
https://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2
-
下載ffmpeg
http://ffmpeg.org/releases/ 下載2.5.2版本
-
創(chuàng)建目錄
- 在ubuntu中/home下創(chuàng)建NDK文件夾蔚携,將下載好的android-ndk-r9d解壓到NDK文件夾
- 解壓android_ndk_r9d
--- tar -jxvf android-ndk-r9d-linux-x86_64.tar.bz2 - 解壓ffmpeg2.5.2
--- tar -jxvf ffmpeg-2.5.2.tar.bz2 - 將解壓后的ffmpeg2.5.2復(fù)制到android-ndk-r9d/sources/文件夾下
---cp -a ffmpeg-2.5.2 android-ndk-r9d/sources/
-
編寫build_android.sh
在ffmpeg-2.5.2文件夾中創(chuàng)建build_android.sh文件
---vim build_android.sh
#!/bin/sh NDK=$HOME/NDK/android-ndk-r9d SYSROOT=$NDK/platforms/android-9/arch-arm TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64 function build_one { ./configure \ --prefix=$PREFIX \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --disable-avdevice \ --disable-doc \ --disable-symver \ --disable-everything \ --enable-decoder=h264 \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --target-os=linux \ --arch=arm \ --enable-cross-compile \ --sysroot=$SYSROOT \ --extra-cflags="-Os -fpic $ADDI_CFLAGS" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make make install } CPU=arm PREFIX=$(pwd)/android/$CPU ADDI_CFLAGS="-marm" build_one
-
修改configure文件
針對android需要將configure中的如下四行(2746-2749,不同的ffmpeg的版本行數(shù)可能會有差異)
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'
替換為
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)'
注意:如果不修改這四行的內(nèi)容直接編譯痘番,編譯出來的so文件類似libavcodec.so.55.39.101,Android上無法加載
-
編譯腳本./build_android.sh
-
如果build_android.sh沒有可執(zhí)行權(quán)限羊壹,請使用如下命令
chmod +x build_android.sh
如果使用./build_android.sh報如下錯誤
-bash: ./start.sh: /bin/sh^M: bad interpreter: No such file or directory
這是由于在window編輯build_android.sh的編碼格式引起的秩霍。
可通過如下操作解決:
- .查看該文件:vim build_android.sh
- 查看該錯誤文件的格式(一般報錯的文件格式是DOS):
:set ff
- 修改該文件格式為UNIX:
:set ff=unix
- 再保存
:wq!
-
-
生成頭文件和庫文件
成功編譯完成后會在NDK/android-ndk-r9d/sources/ffmpeg-2.5.2/android/文件夾中生成一個arm文件夾,這個文件夾就是我們所需要的頭文件和動態(tài)庫,到此就大功告成啦单匣。
編譯所需要的所有文件及編譯出來的動態(tài)庫下載