gpt4 book ai didi

android - 编译 FFMPEG 以供命令行使用

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:45:10 24 4
gpt4 key购买 nike

我一直在尝试编译 FFMPEG,以便我可以通过命令将其与我的 Android 应用程序一起使用。结果应该是 1 个静态文件“ffmpeg”,它不依赖于包。没有 .so 文件。

我设法用 guardianProject 编译它,一切正常,但源代码太旧,缺少我需要的选项。我在 VirtualBox 上使用最新的 Ubuntu,所有必需品都已安装和更新(gawk、yasm、aptitude 等...)。

网上有很多例子。以下是我尝试过的每个选项都遇到的问题。对于以下任一错误,我将不胜感激:

  1. Guardian project - 我设法编译它并获得 ffmpeg 文件,但它使用旧版本的 ffmpeg,不包括 "-movFlags faststart" 选项。我尝试将新的 ffmpeg (2.3.3) 放入其中,但它只是抛出错误。 (我运行了 git submodule init 和 update)

  2. JayH5 - 一个更通用的构建文件,基本上应该适用于每个 ffmpeg。我更新了构建脚本以使用最新的 NDK,它似乎可以正常工作,但它在 /home/dor/Desktop/ndk/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/上失败了未找到 prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config,库检测可能失败。我读到了这个,它似乎需要一个 hack,我不知道如何实现。

  3. Trovao - 这是一个非常好的项目,构建脚本甚至下载了最新的 ffmpeg 和 x264 源代码,我什至成功地将它编译为 FFMPEG 和 X264 文件,但是当我使用它时,我得到这个错误:无法加载库“libx264.so.142 这很奇怪,因为 x264 就在那里,这个项目的整个想法是取消对 .so 文件的需求。

如果能帮助我找出解决任何问题的方法,我将不胜感激。我更喜欢使用 JayH5 构建脚本,因为它看起来最直接...

JayH5 构建文件:

#!/bin/bash

# set the base path to your Android NDK (or export NDK to environment)

if [[ "x$NDK_BASE" == "x" ]]; then
NDK_BASE=/opt/android-ndk
echo "No NDK_BASE set, using $NDK_BASE"
fi

NDK_PLATFORM_VERSION=14
NDK_ABI=arm
NDK_COMPILER_VERSION=4.8
NDK_SYSROOT=$NDK_BASE/platforms/android-$NDK_PLATFORM_VERSION/arch-$NDK_ABI
NDK_UNAME=`uname -s | tr '[A-Z]' '[a-z]'` # Convert Linux -> linux
HOST=$NDK_ABI-linux-androideabi
NDK_TOOLCHAIN_BASE=$NDK_BASE/toolchains/$HOST-$NDK_COMPILER_VERSION/prebuilt/$NDK_UNAME-x86
CC="$NDK_TOOLCHAIN_BASE/bin/$HOST-gcc --sysroot=$NDK_SYSROOT"
LD=$NDK_TOOLCHAIN_BASE/bin/$HOST-ld

BUILD_PATH=build/ffmpeg

./configure \
$DEBUG_FLAG \
--arch=arm \
--target-os=linux \
--enable-runtime-cpudetect \
--enable-pic \
--disable-shared \
--enable-static \
--cross-prefix=$NDK_TOOLCHAIN_BASE/bin/$NDK_ABI-linux-androideabi- \
--sysroot="$NDK_SYSROOT" \
--extra-cflags="-march=armv7-a -mfloat-abi=softfp -fPIC -DANDROID" \
--extra-ldflags="" \
--enable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-network \

最佳答案

编译FFMPEG文件2天就是不行,终于成功了!

在上面的build.sh文件中,只需添加这4行和底部即可避免prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail 错误。

添加到文件:

$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

不要忘记在过程完成后chmod 775 ffmpeg 文件。真的希望这对其他人有帮助!

如果您想要支持 libX264 的 FFMPEG,请使用此项目 - 非常完美。 https://github.com/hiteshsondhi88/ffmpeg-android/

关于android - 编译 FFMPEG 以供命令行使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623225/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com