Android中如果需要用到ffmpeg做視頻處理疫萤,那么最好的方法就是從頭到尾親自從編譯到集成颂跨。踏入ffmpeg的第一步自然就是通過(guò)編譯得到Android中可以用的so文件
環(huán)境準(zhǔn)備
- centerOS7虛擬機(jī),提供下載centerOS7的鏡像文件 百度云迅雷種子地址
- jdk環(huán)境给僵,可參考centerOS7: 搭建java環(huán)境
- android ndk 環(huán)境 毫捣,本文是android-ndk-r13b,下載地址
- ffmpeg-3.2.12帝际,下載地址
請(qǐng)大家按我提供的版本環(huán)境進(jìn)行編譯蔓同,不然會(huì)有很多坑要爬哦。本人就是一路爬坑蹲诀,最后才編譯成功0.0
首先
- 解壓好ffmpeg斑粱,ndk的壓縮包
tar -zxvf ffmpeg-3.2.12.tar.gz //解壓ffmpeg
yum install -y unzip zip //安裝zip壓縮解壓客戶(hù)端
unzip android-ndk-r13b-linux-x86_64.zip
- 配置環(huán)境變量
vi /etc/profile
ANDROID_NDK=/home/mmcc/android-ndk-r13b
JAVA_HOME=/home/mmcc/jdk1.8
PATH=$JAVA_HOME/bin:$ANDROID_NDK/bin:$PATH:.
CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export JAVA_HOME
export PATH
export CLASSPATH
source /etc/profile #生效環(huán)境變量
配置ffmpeg
- 進(jìn)入ffmpeg創(chuàng)建一個(gè)臨時(shí)目錄
ffmpegtemp
[root@master ffmpeg-3.2.12]# mkdir ffmpegtemp
- 創(chuàng)建編譯腳本
vi android_build.sh
#!/bin/bash
export TMPDIR=/home/mmcc/ffmpeg-3.2.12/ffmpegtemp #此處替換
NDK=/home/mmcc/android-ndk-r13b #此處替換
SYSROOT=$NDK/platforms/android-14/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=./android/$CPU
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 -j4
make install
}
build_one
腳本文件大家可以自行去研究,可以根據(jù)需要編譯自己所需的東西
- 給
android_build.sh
賦予執(zhí)行權(quán)限
[root@master ffmpeg-3.2.12]# chmod +x android_build.sh
- 執(zhí)行腳本
[root@master ffmpeg-3.2.12]# ./android_build.sh
接下來(lái)等執(zhí)行完畢后脯爪,就可以在ffmpeg根目錄下發(fā)現(xiàn)一個(gè)android目錄
image
里面有個(gè)arm
目錄進(jìn)去有一個(gè)include
和lib
image
include下面就是我們編譯得到的ffmpeg的頭文件
image
lib下的帶版本號(hào)的so文件就是我們編譯ffmpeg得到的android可用的so文件
则北,接下來(lái)我們把編譯到的ffmpeg文件集成到Android中