將之前的編譯方法在此記錄
Linux系統:Ubuntu 18.04.6 LTS
交叉編譯工具鏈:gcc-aarch64-linux-gnu g+±aarch64-linux-gnu
ffmpeg版本:5.1.3
1.下載源碼
ffmpeg官網:https://ffmpeg.org/download.html#releases
下載完成后,壓縮包解壓到Ubuntu中。
2.安裝依賴
a.安裝交叉編譯工具鏈
sudo apt-get update
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
b.安裝依賴項
sudo apt-get install -y pkg-config-aarch64-linux-gnu
sudo apt-get install libmp3lame-dev libx264-dev libxvidcore-dev
sudo apt-get update && sudo apt-get -y install \autoconf \automake \build-essential \cmake \git-core \libass-dev \libfreetype6-dev \libgnutls28-dev \libmp3lame-dev \libsdl2-dev \libtool \libva-dev \libvdpau-dev \libvorbis-dev \libxcb1-dev \libxcb-shm0-dev \libxcb-xfixes0-dev \meson \ninja-build \pkg-config \texinfo \wget \yasm \zlib1g-dev \libunistring-dev
3.生成Makefile文件
首先cd到解壓好的ffmpeg源碼目錄中。(如果之前編譯過,需要先make clean 一下)
chmod +x configure
./configure --enable-cross-compile --target-os=android --arch=aarch64 --enable-neon --cross-prefix=/usr/bin/aarch64-linux-gnu- --cc=/usr/bin/aarch64-linux-gnu-gcc --cxx=/usr/bin/aarch64-linux-gnu--g++ --prefix=/home/LIB/ffmpeg-5.1.3_linux_arm64 --disable-asm --enable-parsers --disable-decoders --enable-decoder=h264 --enable-decoder=aac --disable-debug --enable-ffmpeg --enable-shared --disable-static --disable-stripping --disable-doc
//可不加此配置--extra-ldflags="-L/usr/aarch64-linux-gnu/lib -lm"
解釋:
--enable-cross-compile 表示啟用交叉編譯模式。
--target-os=android 表示編譯目標平臺為安卓系統。
--arch=aarch64 表示編譯目標架構為aarch64。
--cross-prefix 指定交叉編譯工具鏈的前綴路徑。上文下載gcc-aarch64-linux-gnu之后,默認安裝到了/usr/bin/aarch64-linux-gnu-gcc,這里使用/usr/bin/aarch64-linux-gnu-。
--cc 和 --cxx 分別指定C編譯器和 C++ 編譯器的路徑。
--prefix 指定安裝目錄,在執行make install之后才會安裝。
--disable-asm 表示禁用匯編優化。
--enable-parsers 表示啟用解析器。
--disable-decoders 表示禁用所有解碼器。
--enable-decoder=h264 和 --enable-decoder=aac 表示啟用 H.264 和 AAC 解碼器。
--disable-debug 表示禁用調試信息。
--enable-ffmpeg 表示編譯 FFmpeg 命令行工具。
--enable-shared 表示編譯動態鏈接庫,生成共享庫文件。
--disable-static 表示禁用靜態鏈接庫。
--disable-stripping 表示禁用剝離符號表。
--disable-doc 表示禁用文檔生成。
./configure --prefix=/home/mdz/Documents/Project/ffmpeg_android \
--enable-shared \
--disable-static \
--disable-doc \
--disable-programs \
--disable-avdevice \
--disable-swscale \
--disable-postproc \
--disable-avfilter \
--disable-network \
--disable-everything \
--enable-decoder=h264 \
--enable-protocol=file \
--enable-muxer=mp4 \
--enable-demuxer=mov \
--enable-parser=h264 \
--enable-bsf=h264_mp4toannexb \
--enable-openssl \
--enable-jni \
--enable-mediacodec \
--enable-decoder=h264_mediacodec \
--enable-hwaccel=h264_mediacodec \
--cross-prefix=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android30- \
--target-os=android \
--arch=aarch64 \
--sysroot=$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot \
--extra-cflags="-Os -fpic $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include $ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include/arm-linux-androideabi" \
--extra-ldflags="$ANDROID_NDK_HOME/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/lib/aarch64-linux-android"
4.編譯
需要sudo自己加
make -j$(nproc)
$(nproc)表示本系統線程數,為了多線程編譯。也可寫-j4。
如果出現xxx權限不夠,使用chmod加執行權限
sudo chmod -R 777 ./
5.安裝
需要sudo自己加
make install
此時,編譯好的庫文件就會被安裝到上面configure配置的安裝目錄中了,找到復制完成文件夾就可以在android項目開發時使用。
6.移動和使用
由于安裝的鏈接庫目錄中存在link,所以需要打包后再進行移動,解壓后再在項目中使用。
tar -zcvf 壓縮包 被壓縮1
官方的FFmpeg編譯說明和指導
安卓:
在Ubuntu下,clone這個倉庫,配置好所需環境,即可開始編譯。
編譯說明:https://github.com/arthenica/ffmpeg-kit/tree/main/android#21-prerequisites
其他:
參考官方指導:https://trac.ffmpeg.org/wiki/CompilationGuide