【问题标题】:Im failing to build .so file for android from FFMPEG我无法从 FFMPEG 为 android 构建 .so 文件
【发布时间】:2020-11-02 19:34:31
【问题描述】:

我用不同版本的 ffmpeg 尝试了很多次,但最终都失败了。我不知道他们如何编写 .sh 文件来配置不同的工具。这是我尝试过的一些 .sh 文件,但都失败了。要么只显示android/share 文件夹而不是

  • 安卓/包含

  • 安卓/库

  • 安卓/共享

我最终会出错,例如no file or folder exist

下面我会分享build_arm64-v8a不同版本的文件

版本 1

#!/bin/bash
export NDK=/media/sf_sharing/android-ndk
export HOST_TAG=linux-x86_64 # adjust to your building host
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG

export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++

function build_arm64-v8a
{
  ./configure \
  --prefix=./android/arm64-v8a \
  --enable-static \
  --enable-pic \
  --disable-asm \
  --disable-opencl \
  --disable-cli \
  --host=aarch64-linux \
  --cross-prefix=$TOOLCHAIN/bin/aarch64-linux-android- \
  --sysroot=$TOOLCHAIN/sysroot \

  make clean
  make
  make install
}

build_arm64-v8a
echo build_arm64-v8a finished

第 2 版

#!/bin/bash

TOOLCHAIN=/media/sf_sharing/my-android-toolchain64
CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-
rm -f $(pwd)/compat/strtod.o
function build_one
{
./configure --prefix=$PREFIX --enable-shared --disable-static --enable-protocol=file --enable-pic --enable-small --disable-programs --disable-doc --disable-symver --target-os=android --enable-cross-compile --cross-prefix=$CROSS_PREFIX --extra-cflags="-Os -fpic $ADDI_CFLAGS" --extra-ldflags="$ADDI_LDFLAGS" --sysroot=$TOOLCHAIN/sysroot $ADDITIONAL_CONFIG_FLAG
make clean
make -j2
make install
}

CPU=arm64-v8a
mkdir -p $(pwd)/android/$CPU
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-march=armv8-a"
ADDI_LDFLAGS="-L$TOOLCHAIN/sysroot/usr/lib"
ADDITIONAL_CONFIG_FLAG="--arch=aarch64 --enable-yasm"
build_one

版本 3

#!/bin/bash
export NDK=/media/sf_sharing/android-ndk
export HOST_TAG=linux-x86_64 # adjust to your building host
export TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/$HOST_TAG

export CC=$TOOLCHAIN/bin/aarch64-linux-android21-clang
export CXX=$TOOLCHAIN/bin/aarch64-linux-android21-clang++

function build_arm64-v8a
{
  ./configure \
  --prefix="$HOME/ffmpeg_build" \
  --pkg-config-flags="--static" \
  --extra-cflags="-I$HOME/ffmpeg_build/include" \
  --extra-ldflags="-L$HOME/ffmpeg_build/lib" \
  --extra-libs="-lpthread -lm" \
  --bindir="$HOME/bin" \
  --enable-gpl \
  --enable-gnutls \
  --enable-libaom \
  --enable-libass \
  --enable-libfdk-aac \
  --enable-libfreetype \
  --enable-libmp3lame \
  --enable-libopus \
  --enable-libvorbis \
  --enable-libvpx \
  --enable-libx264 \
  --enable-libx265 \
  --enable-nonfree \

  make clean
  make
  make install
}

build_arm64-v8a
echo build_arm64-v8a finished

我正在使用

  • ffmpeg-snapshot.tar.bz2

  • android-ndk-r21d-linux-x86_64

我在“ndk 21”中唯一知道的是我们需要使用默认工具链(android 文档说)。

如何创建 .sh 文件来构建 .so 文件以在 android 中使用?

【问题讨论】:

    标签: android ffmpeg android-ndk ndk-build .so


    【解决方案1】:

    我建议使用 --disable-everything 构建最简单的版本,然后从那里构建您的命令。我建立在mac上。我编辑了您的第三次尝试,并使用一个编解码器为 arm64 构建,如下所示:

    #!/bin/bash 导出 ANDROID_NDK_HOME=${HOME}/Library/Android/android-ndk-r21 export HOST_TAG=darwin-x86_64 # 适应你的建筑主机 导出 TOOLCHAIN=${ANDROID_NDK_HOME}/toolchains/llvm/prebuilt/$HOST_TAG 功能 build_other { TARGET_ABI=arm64-v8a 主机=aarch64-linux-android ./configure --disable-everything --disable-doc --disable-programs --disable-shared --enable-cross-compile --arch=aarch64 --target-os=linux --enable-pic \ --prefix="$HOME/ffmpeg_build" \ --sysroot=${ANDROID_NDK_HOME}/sysroot\ --enable-encoder=h261 --enable-decoder=h261 \ --extra-ldflags="-L${ANDROID_NDK_HOME}/platforms/android-29/arch-arm64/usr/lib -lc" \ --cc=${TOOLCHAIN}/bin/aarch64-linux-android29-clang --ld=${TOOLCHAIN}/bin/aarch64-linux-android-ld --strip=${TOOLCHAIN}/bin/aarch64-linux -android-strip 打扫干净 制作 进行安装 } mkdir $HOME/ffmpeg_build 2> /dev/null build_other echo build_arm64-v8a 完成

    注意: 我建立在mac上,这应该适用于linux。 另外,不要链接pthread! pthread 在 libc for android 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-03
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-15
      • 2018-10-10
      • 2019-09-12
      相关资源
      最近更新 更多