2014-09-02 103 views
9

我一直在编译FFMPEG,所以我可以在我的Android应用程序中用命令来使用它。结果应该是1个不依赖于包的静态文件“ffmpeg”。没有.so文件。编译FFMPEG用于命令行使用

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

网络上有很多例子。以下是我尝试过的每个选项遇到的问题。我会很感激与下面的错误一方的帮助:

  1. Guardian project - 我设法编译它,并得到了ffmpeg的文件,但它使用的是旧版本的ffmpeg不包括"-movFlags faststart"选项。我尝试在那里扔新的ffmpeg(2.3.3),但它只是抛出错误。 (我跑git submodule初始化和更新)

  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 not found, library detection may fail. 我读了这个,它似乎需要黑客,我不明白如何实现。

  3. Trovao - 这是一个非常好的项目和构建脚本甚至下载最新的ffmpeg和X264的来源,我甚至成功地在它编译成FFMPEG和X264文件,但是当我使用它,我得到这个错误:could not load library "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 \ 

回答

4

之后编译,只是没有工作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/

+0

没有变化!我在'configure'选项中添加了'$ ADDITIONAL_CONFIGURE_FLAG'。我在配置之前添加了它...没有任何更改:( – 2016-06-27 16:38:18

+0

$ ADDITIONAL_CONFIGURE_FLAG的值是什么? – 2017-10-19 08:06:25