生活随笔
收集整理的這篇文章主要介紹了
Android 编译ffmpeg库
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Android 編譯ffmpeg庫
下載ffmpeg源碼
git clone https://git.ffmpeg.org/ffmpeg.git 或者 git clone https://github.com/FFmpeg/FFmpeg.git。
下載NDK版本, 目前我使用的是NDK21, 下載NDK和查看NDK目錄文件的方法:
(1) 進入AndroidStudio查看, 勾選Show Package Details ,可以查看當(dāng)前已經(jīng)下載的NDK版本, 如果需要下載其他版本可以點擊下載. 存放目錄在自己配置的Android/Sdk目錄下面.
(2) 在Android開發(fā)者文檔可以下載到ndk源碼,ndk下載鏈接。 根據(jù)實際需求選擇對應(yīng)ndk版本,建議下載ndk-r20b穩(wěn)定版。(這個是github上建議下載)
創(chuàng)建編譯腳本build_ffmpeg.sh
#!/bin/bash
make clean
set -e
archbit=64if [ $archbit -eq
64 ];then
echo "build for 64bit"
ARCH=aarch64
CPU=armv8-a
API=21
PLATFORM=aarch64
ANDROID=android
CFLAGS=""
LDFLAGS=""else
echo "build for 32bit"
ARCH=arm
CPU=armv7-a
API=16
PLATFORM=armv7a
ANDROID=androideabi
CFLAGS="-mfloat-abi=softfp -march=$CPU"
LDFLAGS="-Wl,--fix-cortex-a8"
fiexport NDK=/home/xzx/Android/Sdk/ndk/21.0.6113669
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64/bin
export SYSROOT=$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot
export CROSS_PREFIX=$TOOLCHAIN/
$ARCH-linux-
$ANDROID-
export CC=$TOOLCHAIN/
$PLATFORM-linux-
$ANDROID$API-clang
export CXX=$TOOLCHAIN/
$PLATFORM-linux-
$ANDROID$API-clang++
export PREFIX=../ffmpeg-android/
$CPUfunction build_android {./configure
\--prefix
=$PREFIX \--cross-prefix
=$CROSS_PREFIX \--target-os
=android
\ --arch
=$ARCH \--cpu
=$CPU \--cc
=$CC \--cxx
=$CXX \--nm
=$TOOLCHAIN/
$ARCH-linux-
$ANDROID-nm
\--strip
=$TOOLCHAIN/
$ARCH-linux-
$ANDROID-strip
\--enable-cross-compile
\--sysroot
=$SYSROOT \--extra-cflags
="$CFLAGS" \--extra-ldflags
="$LDFLAGS" \--extra-ldexeflags
=-pie
\--enable-runtime-cpudetect
\--disable-static
\--enable-shared
\--enable-logging
\--disable-ffprobe
\--enable-ffplay
\--disable-ffmpeg
\--enable-debug
\--disable-doc
\--enable-avfilter
\--enable-decoders
\$ADDITIONAL_CONFIGURE_FLAGmakemake install
}
build_android
修改文件的權(quán)限chmod 777 build_ffmpeg.sh
執(zhí)行編譯腳本./build_ffmpeg.sh
編譯完成生成ffmpeg-android文件, 我編譯的arm64版本, 其他版本自己修改腳本編譯.
xzx@xzx-Lenovo:~/disk2/project/ffmpeg/ffmpeg-android$ ls
armv8-a
生成的對應(yīng)模塊的so庫, 還存在對應(yīng)的頭文件.
xzx@xzx-Lenovo:~/disk2/project/ffmpeg/ffmpeg-android/armv8-a/lib$ ls
libavcodec.so libavdevice.so libavfilter.so libavformat.so libavutil.so libswresample.so libswscale.so pkgconfig
選擇編譯不同版本的ffmpeg, 請使用git checkout release/4.2不同的分支進行卻換源碼.
xzx@xzx-Lenovo:~/disk2/project/ffmpeg/ffmpeg$ git branch -amasterrelease/4.0
* release/4.2remotes/origin/HEAD -> origin/masterremotes/origin/masterremotes/origin/oldabiremotes/origin/release/0.10remotes/origin/release/0.11remotes/origin/release/0.5remotes/origin/release/0.6remotes/origin/release/0.7remotes/origin/release/0.8remotes/origin/release/0.9remotes/origin/release/1.0remotes/origin/release/1.1remotes/origin/release/1.2remotes/origin/release/2.0remotes/origin/release/2.1remotes/origin/release/2.2remotes/origin/release/2.3remotes/origin/release/2.4remotes/origin/release/2.5remotes/origin/release/2.6remotes/origin/release/2.7remotes/origin/release/2.8remotes/origin/release/3.0remotes/origin/release/3.1remotes/origin/release/3.2remotes/origin/release/3.3remotes/origin/release/3.4remotes/origin/release/4.0remotes/origin/release/4.1remotes/origin/release/4.2remotes/origin/release/4.3remotes/origin/release/4.4
編譯出來的庫下載鏈接: https://download.csdn.net/download/nihenmeila/35382760
參考編譯鏈接:
FFmpeg官方文檔
查看FFmpeg編譯流程
查看FFmpeg常用命令行
https://github.com/xufuji456/FFmpegAndroid/blob/master/doc/FFmpeg_compile_shell.md
總結(jié)
以上是生活随笔為你收集整理的Android 编译ffmpeg库的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。