編譯Android平臺(tái)可用的ffmpeg源碼

這篇文章的目的是使用NDK編譯ffmpeg源碼,將編譯成功的庫(kù)文件在Android平臺(tái)使用開(kāi)發(fā)音視頻。

我這里使用的是xShell鏈接阿里云的服務(wù)器,當(dāng)然你也可以使用自己的Linux操作平臺(tái),我這里使用的是Ubantu。

然后下載NDK,根據(jù)自己的平臺(tái)可以下載最新版本或者舊版本,我這里使用的是版本17的NDK,完成后解壓。

然后下載ffmpeg源碼,下載并解壓。

最終如下所示


新建一個(gè)build.sh文件,放在ffmpeg-4.0.2目錄下,里面執(zhí)行的是shell語(yǔ)句:
shell語(yǔ)法可以查看shell腳本記錄

#!/bin/bash

CPU=arm-linux-androideabi

TOOLCHAIN=$NDK_ROOT/toolchains/$CPU-4.9/prebuilt/linux-x86_64
FLAGS="-isystem $NDK_ROOT/sysroot/usr/include/arm-linux-androideabi -D__ANDROID_API__=21 -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -mthumb -Wa,--noexecstack -Wformat -Werror=format-security  -O0 -fPIC"
INCLUDES=" -isystem $NDK_ROOT/sources/android/support/include"

PREFIX=`pwd`/android/armeabi-v7a_lsn11

./configure \
--prefix=$PREFIX \
--enable-small \
--disable-programs \
--disable-avdevice \
--disable-encoders \
--disable-muxers \
--disable-filters \
--enable-cross-compile \
--cross-prefix=$TOOLCHAIN/bin/$CPU- \
--disable-shared \
--enable-static \
--sysroot=$NDK_ROOT/platforms/android-21/arch-arm \
--extra-cflags="$FLAGS $INCLUDES" \
--extra-cflags="-isysroot $NDK_ROOT/sysroot/" \
--arch=arm \
--target-os=android 

注意

  • FLAGS和INCLUDES是從AndroidStudio可以獲得,復(fù)制過(guò)來(lái)可能編譯會(huì)報(bào)錯(cuò),把報(bào)錯(cuò)的代碼刪除即可:
externalNativeBuild/xxx/build.ninja
  • build.sh中的NDK路徑如何設(shè)置?
    定位到android-ndk-r17c目錄下,執(zhí)行pwd


然后設(shè)置NDK的環(huán)境變量即可:

export NDK=/root/softffmpeg/android-ndk-r17c

查看NDK的路徑:


  • 如果執(zhí)行build.sh沒(méi)有權(quán)限,則需要執(zhí)行:
chmod +x build.sh 

build.sh的作用是執(zhí)行configure,生成Makefile文件,下面是成功執(zhí)行的結(jié)果:


接著執(zhí)行

make
make install

執(zhí)行成功會(huì)在當(dāng)前目錄下生成一個(gè)android目錄,里面就是所需的靜態(tài)庫(kù)和頭文件。


通過(guò)執(zhí)行

tree lib/

可以看到靜態(tài)庫(kù)的樹(shù)形結(jié)構(gòu)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容