用Freetype2为ARM构buildFFmpeg

我试图构buildFFmpeg二进制文件与freetype库包括(我需要它的抽屉filter)。 不幸的是,我无法正确configurationffmpeg,每次尝试都以“freetype not found”错误结束。

PS我试图build立guardian-ffmpeg项目,但我在configuration过程中出现错误。

PS2build立平原ffmpeg工作得很好

configuration脚本:

make distclean &./configure --target-os=linux \ --cross-prefix=arm-linux-androideabi- \ --arch=arm \ --cpu=armv7-a \ --enable-libfreetype --enable-filter=drawtext \ #!Freetype params --disable-network \ --disable-ffplay \ --disable-ffprobe \ --disable-ffserver \ --enable-protocol=file \ --sysroot=${ANDROID_NDK_ROOT_PATH}/platforms/${ANDROID_API_VERSION}/arch-arm \ --prefix=build/armeabi-v7a \ --disable-asm \ --extra-cflags='-DANDROID -Ifreetype2/ -I${ANDROID_NDK_ROOT_PATH}/sources/cxx-stl/system/include -march=armv7-a -mfloat-abi=softfp' \ --extra-ldflags='-Wl,--fix-cortex-a8 -Lfreetype2/ -L../android-libs -Wl,-rpath-link,../android-libs' \ --extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti' make -j6 && make install || exit 0 

目录结构:

 ffmpeg/ -ffmpeg dirs/ -freetype2/ -rest of ffmpeg files ( including configure, make, etc ) 

我已经检查了guardian-project中的修补程序源,我发现ffmpegconfiguration文件可能需要对require_libfreetype方法进行一些更改?!

提前致谢(对不起我的英文不好)

编辑:build立OSX小牛,最后3行config.log ; OSX在第二行没有得到pkg-config因此是false

 require_libfreetype false --exists --print-errors freetype ERROR: freetype not found 

编辑:解决scheme!

我已经解决了我的问题。 我已经使用了Xubuntu 14.04 64bit + Freetype 2.5.3 +最新的FFmpeg repo +安装li​​nux软件包“pkg_config”和ffmpegconfiguration脚本(查找pkg_config和检查初始化variables)

freetype的configuration文件:

 NDK_BASE=/home/dpc/Documents/android-ndk-r9d/ NDK_PROCESSOR=x86_64 NDK_PLATFORM_LEVEL=9 NDK_ABI=arm NDK_COMPILER_VERSION=4.6 # Android NDK setup NDK_PLATFORM_LEVEL=9 NDK_ABI=arm NDK_COMPILER_VERSION=4.6 NDK_SYSROOT=$NDK_BASE/platforms/android-$NDK_PLATFORM_LEVEL/arch-$NDK_ABI NDK_UNAME=`uname -s | tr '[AZ]' '[az]'` if [ $NDK_ABI = "x86" ]; then HOST=i686-linux-android NDK_TOOLCHAIN=$NDK_ABI-$NDK_COMPILER_VERSION else HOST=$NDK_ABI-linux-androideabi NDK_TOOLCHAIN=$HOST-$NDK_COMPILER_VERSION fi NDK_TOOLCHAIN_BASE=$NDK_BASE/toolchains/$NDK_TOOLCHAIN/prebuilt/$NDK_UNAME-$NDK_PROCESSOR echo "dpc:" $NDK_TOOLCHAIN_BASE CC="$NDK_TOOLCHAIN_BASE/bin/$HOST-gcc --sysroot=$NDK_SYSROOT" LD=$NDK_TOOLCHAIN_BASE/bin/$HOST-ld STRIP=$NDK_TOOLCHAIN_BASE/bin/$HOST-strip PREFIX=$(pwd)/build simple_config(){ make clean ./configure --host=arm-linux-androideabi --without-zlib --without-png --prefix= make -j4 make install DESTDIR=$(pwd) } complex_config(){ ./configure \ CC="$CC" \ LD="$LD" \ CFLAGS="-std=gnu99 -mcpu=cortex-a8 -marm -mfloat-abi=softfp -mfpu=neon" \ --host=$HOST \ --with-sysroot="$NDK_SYSROOT" \ --enable-static \ --disable-shared \ --prefix=$PREFIX --without-bzip2 make -j4 make install } make clean complex_config 

ffmpegconfiguration文件:

 #!/bin/sh ANDROID_NDK_ROOT_PATH=/home/dpc/Documents/android-ndk-r9d ANDROID_API_VERSION=android-9 #export PATH=${ANDROID_NDK_ROOT_PATH}:${ANDROID_NDK_ROOT_PATH}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:$PATH export PATH=${ANDROID_NDK_ROOT_PATH}:${ANDROID_NDK_ROOT_PATH}/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin/:$PATH echo $PATH #export PKG_CONFIG_PATH=/home/dpc/Documents/freetype-2.5.3/build/lib/pkgconfig/ #echo $PKG_CONFIG_PATH #armv7-a neon #export ARCH=armeabi-v7a-neon #./configure --target-os=linux --cross-prefix=arm-linux-androideabi- --arch=arm --cpu=armv7-a --sysroot=${ANDROID_NDK_ROOT_PATH}/platforms/${ANDROID_API_VERSION}/arch-arm --disable-avdevice --disable-decoder=h264_vdpau --prefix=build/armeabi-v7a-neon --extra-cflags='-DANDROID -I${ANDROID_NDK_ROOT_PATH}/sources/cxx-stl/system/include -march=armv7-a -mfloat-abi=softfp -mfpu=neon' --extra-ldflags='-Wl,--fix-cortex-a8 -L../android-libs -Wl,-rpath-link,../android-libs' --extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti' #make -j6 && make install && make distclean|| exit 0 #armv7-a export ARCH=armeabi-v7a ./configure --target-os=linux \ --cross-prefix=arm-linux-androideabi- \ --arch=arm \ --enable-libfreetype \ --cpu=armv7-a \ --sysroot=${ANDROID_NDK_ROOT_PATH}/platforms/${ANDROID_API_VERSION}/arch-arm \ --disable-avdevice \ --disable-decoder=h264_vdpau \ --prefix=build/armeabi-v7a \ --extra-cflags='-DANDROID -I${ANDROID_NDK_ROOT_PATH}/sources/cxx-stl/system/include -march=armv7-a -mfloat-abi=softfp' \ --extra-ldflags='-Wl,--fix-cortex-a8 -L../android-libs -Wl,-rpath-link,../android-libs' \ --extra-cxxflags='-Wno-multichar -fno-exceptions -fno-rtti' make -j6 && make install && make distclean|| exit 0 

希望它有助于某人(cc:@SinhHo)

交叉编译ffmpeg for android与Mac上的freetype支持时,我得到了同样的错误。

以下是错误输出

 arm-linux-androideabi-gcc: error: /var/folders/f0/b79d4kbs6cd1gcgt39gpw7t80000gn/T//ffconf.2zxiYMYG.m: Objective-C compiler not installed on this system require_libfreetype false --exists --print-errors freetype2 ERROR: freetype2 not found 

所以我认为这个错误是由pkg-config引起的。

我的解决方案是将freetype的pkgconfig文件添加到PKG_CONFIG_PATH并指定从端口安装的pkg-config

 export PKG_CONFIG_PATH=../freetype-2.6.3/out/armeabi/lib/pkgconfig ./configure ... --pkg-config=/opt/local/bin/pkg-config ... 

注意

我使用下面的配置从android独立工具链构建了freetype

 export CFLAGS="-fPIC" ./configure --host=arm-linux-androideabi \ --with-png=no --enable-shared=no --prefix=out/armeabi 

希望这对任何有类似问题的人都有帮助。