在 OSX Yosemite 上,我尝试构建包含 freetype 库的 FFmpeg(我需要它来处理 drawtext 过滤器)。不幸的是,我无法正确配置 ffmpeg,每次尝试都以“未找到 freetype”错误结束。
- 构建没有 freetype 的普通 FFmpeg-2.5.3 效果很好(随后这教程)
- 构建 Freetype-2.5.3 也可以正常工作(随后这教程)
- 包括额外的库位置,其中内置的 freetype 位于
像这样:
--extra-ldflags="-L$PREFIX/lib"
--extra-cflags="-I$PREFIX/include -I$PREFIX/include/freetype2"
./build_android.sh
最终ERROR: freetype2 not found
构建android.sh:
#!/bin/bash
NDK=$HOME/Desktop/adt/android-ndk-r10d
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/darwin-x86_64
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--enable-libfreetype \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm -I$PREFIX/include"
ADDI_LDFLAGS="-L$PREFIX/lib"
build_one
config.log 的最后三行:
require_libfreetype
false --exists --print-errors freetype2
ERROR: freetype2 not found
提前致谢(抱歉我的英语不好)
PS:我检查了 guardian-project 中的补丁源,发现了以下内容:
# this is a fake pkg-config since ffmpeg requires pkg-config if you want to
# include external libraries like libfreetype or libass. The Android NDK does
# not provide any kind of pkg-config.
这是否意味着我必须转到 Linux?OSX 上没有安装 pkg-config 吗?
algakzru$ pkg-config --version
0.28
答案1
我让它与 Guardian 项目版本的 ffmpeg build 一起工作(用于命令行输出)。请在此处查看我的 fork:
https://github.com/touchlab/android-ffmpeg
本质上,您需要让 ffmpeg 配置使用 fake-pkg-config,并对其进行修改以查看参数 3,而不是参数 2(在我的 fork 中)。fork 版本的顶部有一些说明。我刚刚运行了一个测试版本,根据该说明,您可以忽略修复 ffmpeg/libavutil/arm/intmath.h 中的注释的部分。只需执行 ffmpeg/configure 更改即可。
最初,ffmpeg/configure 更改是通过 config_ffmpeg.sh 中的补丁完成的,但我完全删除了补丁,并没有制作新的补丁。更新子模块版本后,补丁不再有效。
另外,作为参考,我使用的是 ndk r10c 版本。
从今天起(2015 年 2 月 8 日),ffmpeg、freetype2 和 x264 应该都是 master。我可能最终会将它们固定到一个版本,但它在我的优先级列表中并不是很高,所以...