Как собрать FFmpeg с Freetype2 для Android

Как собрать FFmpeg с Freetype2 для Android

На OSX Yosemite я пытаюсь собрать FFmpeg с включенной библиотекой freetype (она мне нужна для фильтра drawtext). К сожалению, я не могу правильно настроить ffmpeg, и каждая попытка заканчивается ошибкой "freetype not found".

  1. Сборка простого FFmpeg-2.5.3 без freetype работает отлично (следуяэтотруководство)
  2. Сборка Freetype-2.5.3 также работает нормально (следуетэтотруководство)
  3. Включены дополнительные места расположения библиотек, где находится встроенный freetype,

так:

--extra-ldflags="-L$PREFIX/lib" 
--extra-cflags="-I$PREFIX/include -I$PREFIX/include/freetype2"
  1. ./build_android.shзаканчивается тем, чтоERROR: freetype2 not found

build_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

Последние 3 строки 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? Разве pkg-config не установлен на OSX?

algakzru$ pkg-config --version
0.28

решение1

Я заставил это работать с версией проекта guardian сборки ffmpeg (для вывода командной строки). Смотрите мой форк здесь:

https://github.com/touchlab/android-ffmpeg

По сути, вам нужно заставить ffmpeg configure использовать fake-pkg-config и изменить его так, чтобы он смотрел на param 3 вместо param 2 (который есть в моем форке). В верхней части форкнутой версии есть несколько инструкций. Я только что запустил тестовую сборку, и согласно ей, вы можете проигнорировать часть об исправлении комментариев в ffmpeg/libavutil/arm/intmath.h. Просто внесите изменения в ffmpeg/configure.

Первоначально изменение ffmpeg/configure было сделано с помощью патча в config_ffmpeg.sh, но я полностью удалил патчи и не делал новый. Патчи перестали быть действительными после обновления версий подмодулей.

Также, для справки, я использую версию ndk r10c.

ffmpeg, freetype2 и x264 должны быть master на сегодняшний день (08.02.2015). Возможно, я в конечном итоге прикреплю их к версии, но это не очень высоко в моем списке приоритетов, так что...

Связанный контент