我正在尝试构建包含freetype库的FFmpeg二进制文件(我需要它来使用drawtext过滤器)。不幸的是,我无法正确配置ffmpeg,每次尝试都以“未找到freetype”错误结束。
PS:我尝试构建guardian-ffmpeg项目,但在配置过程中遇到错误。
PS2:构建普通的ffmpeg非常顺利。
配置脚本:
PS:我尝试构建guardian-ffmpeg项目,但在配置过程中遇到错误。
PS2:构建普通的ffmpeg非常顺利。
配置脚本:
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中的补丁源代码,发现ffmpeg配置文件中的require_libfreetype
方法可能需要进行一些更改?!
先行致谢(对我的糟糕英语表示抱歉)
编辑:
在OSX Mavericks上构建,
config.log
的最后3行;由于OSX没有pkg-config
,因此第2行为false
:
require_libfreetype
false --exists --print-errors freetype
ERROR: freetype not found
编辑:
解决方案!!!
我已经成功解决了我的问题。我使用的是Xubuntu 14.04 64位+ Freetype 2.5.3 + 最新的FFmpeg存储库+安装了Linux包“pkg_config”和ffmpeg配置脚本中的小修改(查找pkg_config并检查初始化变量)
freetype的配置文件:
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 '[A-Z]' '[a-z]'`
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
FFmpeg配置文件:
#!/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
希望对某些人有所帮助(@SinhHo)