日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

ffmpeg系列之编译安卓版ffmpeg库

發布時間:2023/12/20 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ffmpeg系列之编译安卓版ffmpeg库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 前言
  • 正文
    • 準備資源
    • 配置解壓后的文件夾ffmpeg中的configure
    • 編寫Android編譯的腳本
    • 編譯

前言

FFmpeg是一個autoconf項目,cmake那套編譯方法就沒辦法用了,因為autoconf只支持Unix-like的系統。所以最好在linux下編譯、。網上有各種教程,但是跟著弄的時候又跑不通,關鍵問題在于ndk的版本,和build_android.sh腳本要對應,以下內容是采用ndk21版本編譯出來的,不適用其他版本

正文

準備資源

準備ffmpeg源碼
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg

準備安卓ndk21
wget https://dl.google.com/android/repository/android-ndk-r21b-linux-x86_64.zip
unzip android-ndk-r21b-linux-x86_64.zip

配置解壓后的文件夾ffmpeg中的configure

cd ffmpeg
vim configure

3921行左右.將如下內容

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

這一步的主要目的是生成Android能夠使用的 名稱-版本.so文件的格式,不然的話生成的是Linux上使用庫,Android不能用。

編寫Android編譯的腳本

ps:注意以下腳本只能配合ndk21使用

cd ffmpeg
vim build_android.sh

#!/bin/bash # 清空上次的編譯 make clean #你自己的NDK路徑. PREFIX=build_android NDK=/home/anjoiner/Android/Sdk/ndk-bundle TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64 SYSROOT=$TOOLCHAIN/sysroot API=21function build_android { echo "Compiling FFmpeg for $CPU" ./configure \--prefix=$PREFIX \--disable-static \--disable-doc \--disable-ffmpeg \--disable-ffplay \--disable-ffprobe \--disable-doc \--disable-symver \--enable-nonfree \--enable-gpl \--enable-small \--enable-neon \--enable-hwaccels \--enable-avdevice \--enable-postproc \--enable-shared \--enable-jni \--enable-mediacodec \--enable-decoder=h264_mediacodec \--cross-prefix=$CROSS_PREFIX \--target-os=android \--arch=$ARCH \--cpu=$CPU \--nm=$NM \--strip=$STRIP \--cc=$CC \--cxx=$CXX \--enable-cross-compile \--sysroot=$SYSROOT \--extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \--extra-ldflags="$ADDI_LDFLAGS" \$ADDITIONAL_CONFIGURE_FLAG make clean make make install echo "The Compilation of FFmpeg for $CPU is completed" }#armv8-a ARCH=aarch64-linux-android- VERSION=arm64 CPU=armv8-a CROSS_PREFIX=$TOOLCHAIN/bin/${ARCH} CC=$TOOLCHAIN/bin/aarch64-linux-android$API-clang CXX=$TOOLCHAIN/bin/aarch64-linux-android$API-clang++ NM=$TOOLCHAIN/bin/${ARCH}nm STRIP=$TOOLCHAIN/bin/${ARCH}strip PREFIX=$(pwd)/android/$CPU OPTIMIZE_CFLAGS="-march=$CPU" build_android#armv7-a ARCH=arm-linux-androideabi- VERSION=arm CPU=armv7-a CROSS_PREFIX=$TOOLCHAIN/bin/${ARCH} CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++ NM=$TOOLCHAIN/bin/${ARCH}nm STRIP=$TOOLCHAIN/bin/${ARCH}strip PREFIX=$(pwd)/android/$CPU OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=neon -march=$CPU" build_android

編譯

一定要sudo執行,否則無法再/usr/local/share目錄下創建文件
./configure --disable-x86asm
sudo chmod +x build_android.sh
sudo ./build_android.sh

總結

以上是生活随笔為你收集整理的ffmpeg系列之编译安卓版ffmpeg库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。