天天看點

linux下ffmpeg編譯成so檔案,Linux環境編譯ffmpeg生成.so庫

ffmpeg官網

編譯錯誤:

make: *** No rule to make target '/tests/Makefile'.  Stop.

Unknown option "--disable-ffserver".

See ./configure --help for available options.

出現這個錯誤的原因可能是ffmpeg版本過高或者NDK版本過高

我的環境:

NDK(android-ndk-r14b-linux-x86_64.zip)

FFmpeg(ffmpeg-3.3.tar.gz)

先下載下傳安裝NDK

NDK歸檔曆史版本下載下傳

下載下傳android-ndk-r14b-linux-x86_64.zip 然後解壓  指令:unzip  android-ndk-r14b-linux-x86_64.zip  如果未安裝工具軟體先安裝壓縮工具

可以下載下傳再放入到指定檔案夾 或者直接下載下傳

mkdir ndk_build//建立檔案夾

cd ndk_build//進入到檔案夾

wget +linux版本的下載下傳連結位址//下載下傳ndk

unzip + 壓縮檔案//解壓

配置ndk(進入環境配置後在最後添加配置路徑  ESC鍵退出編輯 然後儲存退出  ,記得執行環境變量)

vim ~/.bashrc//進入環境變量配置

//以下代碼添加到文末

export NDKROOT=/home/ndk_build/android-ndk-r14b//配置你的安裝路徑

export PATH=$NDKROOT:$PATH//配置路徑

:wq!//先按Esc鍵然後輸入wq!儲存退出

source ~/.bashrc//執行環境變量

ndk-build//檢視是否安裝成功,隻要不是顯示ndk-build not found,則表示安裝成功

指令下載下傳ffmpeg版本  建議不要太高  4.1.1我沒有編譯成功

wget http://ffmpeg.org/releases/ffmpeg-3.3.tar.gz

tar -xzf ffmpeg-3.3.tar.gz

編寫編譯(.sh)腳本

建立編譯腳本

在ffmpeg 跟目錄下建立android_build.sh(名稱随意):

然後編輯該腳本

touch android_build.sh//建立腳本檔案

vim android_build.sh

然後複制一下代碼使用Shift+Insert鍵粘貼到腳本中,然後隻修改配置NDK路徑,注意檢查檔案copy是否全

#!/bin/bash

make clean

export NDK=/home/ndk_build/android-ndk-r14b

export SYSROOT=$NDK/platforms/android-9/arch-arm/

export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

export CPU=arm

export PREFIX=$(pwd)/android/$CPU

export ADDI_CFLAGS="-marm"

./configure --target-os=linux \

--prefix=$PREFIX --arch=arm \

--disable-doc \

--enable-shared \

--disable-static \

--disable-yasm \

--disable-symver \

--enable-gpl \

--disable-ffmpeg \

--disable-ffplay \

--disable-ffprobe \

--disable-ffserver \

--disable-doc \

--disable-symver \

--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

--enable-cross-compile \

--sysroot=$SYSROOT \

--extra-cflags="-Os -fpic $ADDI_CFLAGS" \

--extra-ldflags="$ADDI_LDFLAGS" \

$ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

先按Esc鍵然後輸入wq!儲存退出 然後執行下面代碼

chmod +x android_build.sh

然後修改configure,如果你不修改的話,編譯出來過後的.so檔案後面會有一串數字,無法使用,是以得修改他的命名規則

将該檔案中的如下四行:(輸入/SLIBNAME快速搜尋定位)

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

先按Esc鍵然後輸入wq!儲存退出

最好編譯.sh檔案

./android_build.sh

linux下ffmpeg編譯成so檔案,Linux環境編譯ffmpeg生成.so庫

然後等待編譯完成