二、編譯ffmpeg
來自專欄 移動音視頻開發
編譯環境
- Ubuntu14.04
- Ffmpeg2.5.2
- Anroid-ndk-r9d-Linux-x86_64
編譯前的準備
查看ubuntu的版本是32位還是64位 uname -a
android-ndk需要和ubuntu版本的位數保持一致
編譯步驟
- 下載ndk
https://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2
2. 下載ffmpeg
http://ffmpeg.org/releases/ ---下載2.5.2版本3. 創建目錄
- 在ubuntu中/home下創建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複製到android-ndk-r9d/sources/文件夾下---cp -a ffmpeg-2.5.2 android-ndk-r9d/sources/
4. 編寫build_android.sh
在ffmpeg-2.5.2文件夾中創建build_android.sh文件 ---vim build_android.sh#!/bin/shNDK=$HOME/NDK/android-ndk-r9dSYSROOT=$NDK/platforms/android-9/arch-armTOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64function 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_FLAGmake cleanmakemake install}CPU=armPREFIX=$(pwd)/android/$CPUADDI_CFLAGS="-marm"build_one
5. 修改configure文件
針對android需要將configure中的如下四行(2746-2749,不同的ffmpeg的版本行數可能會有差異)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)
6. 編譯腳本./build_android.sh
- 如果build_android.sh沒有可執行許可權,請使用如下命令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!
7. 生成頭文件和庫文件
成功編譯完成後會在NDK/android-ndk-r9d/sources/ffmpeg-2.5.2/android/文件夾中生成一個arm文件夾,這個文件夾就是我們所需要的頭文件和動態庫,到此就大功告成啦。
編譯所需要的所有文件及編譯出來的動態庫下載
https://download.csdn.net/download/adolph_lu/10430637
推薦閱讀:
※怎麼說服我不買 iPhone,接受 Android 手機?
※為什麼安卓國行比水貨貴那麼多?
※你是如何使用tasker的?
※輕鬆去廣告、凍結流氓 App,就用這些 Android 應用
※木犀互聯網技術周刊(第四期)