Linux 下編譯 FFmpeg for Android

環境

操做系統:ubuntu 16.04LTS x86_64linux

ndk版本:android-ndk-r19android

FFmpeg版本:ffmpeg-3.2.2git

配置NDK和下載FFmpeg

安裝好android studio並在tools->Android->SDK Manager 中安裝ndk.github

FFmpeg 到官網 http://ffmpeg.org/ 下載相應版本的源碼。ubuntu

編譯

解壓FFmpeg源碼包後,修改ffmpeg-x.x.x/configurebash

ide

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)'

修改成ui

SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

這樣編譯出來的so命名才符合android的使用。idea

在ffmpeg-x.x.x文件夾下建立相應的腳本文件 build_android_arm.sh、build_android_x86.sh、build_android_arm.sh。spa

#!/bin/bash
export TMPDIR=$HOME/temp
NDK=$HOME/Android/Sdk/ndk-bundle
SYSROOT=$NDK/platforms/android-19/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

CPU=arm
PREFIX=$HOME/ffmpeg-android/arm/
ADDI_CFLAGS="-marm"

function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-small \
--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
}

build_one

這裏只是用了arm的平臺,若是須要mips,或者x86須要修改build.sh腳本的arch和路徑這裏不贅述了。

chmod o+x build_android_arm.sh ,而後 ./build_android_arm.sh 開始編譯。小等片刻,你就能在PREFIX所標示的路徑下看到 /include 和 /lib兩個文件夾,編譯完成,接下來就能夠用 android studio 建立工程了。

下載地址

https://github.com/Huatian/Scripts_FFmpeg_For_Android

相關文章
相關標籤/搜索