Cómo construir FFmpeg con Freetype2 para Android

Cómo construir FFmpeg con Freetype2 para Android

En OSX Yosemite, estoy intentando crear FFmpeg con la biblioteca freetype incluida (la necesito para el filtro de texto de dibujo). Desafortunadamente, no puedo configurar ffmpeg correctamente y cada intento finaliza con el error "freetype no encontrado".

  1. La construcción simple de FFmpeg-2.5.3 sin freetype funciona perfectamente bien (seguidoestetutorial)
  2. La construcción de Freetype-2.5.3 también funciona bien (seguidoestetutorial)
  3. Se incluyen ubicaciones adicionales de la biblioteca, donde se encuentra el tipo libre construido,

como esto:

--extra-ldflags="-L$PREFIX/lib" 
--extra-cflags="-I$PREFIX/include -I$PREFIX/include/freetype2"
  1. ./build_android.shtermina conERROR: 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

Últimas 3 líneas de config.log:

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

Gracias de antemano (y perdón por mi pobre inglés)

PD: Revisé las fuentes del parche en guardian-project y encontré esto:

# 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.

¿Significa que tengo que pasarme a Linux? ¿No está instalado pkg-config en OSX?

algakzru$ pkg-config --version
0.28

Respuesta1

Conseguí que esto funcionara con la versión del proyecto guardián de ffmpeg build (para una salida de línea de comando). Mira mi tenedor aquí:

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

Esencialmente, necesita configurar ffmpeg para usar fake-pkg-config y modificarlo para ver el parámetro 3 en lugar del parámetro 2 (que está en mi bifurcación). Hay algunas instrucciones en la parte superior de la versión bifurcada. Acabo de ejecutar una compilación de prueba y, de acuerdo con eso, puedes ignorar la parte sobre cómo corregir los comentarios en ffmpeg/libavutil/arm/intmath.h. Simplemente haga el cambio ffmpeg/configure.

Originalmente, el cambio de ffmpeg/configure se realizó con un parche en config_ffmpeg.sh, pero eliminé los parches por completo y no hice uno nuevo. Los parches dejaron de ser válidos después de actualizar las versiones del submódulo.

Además, como referencia, estoy usando la versión ndk r10c.

ffmpeg, freetype2 y x264 deberían ser maestros a partir de hoy (8/02/2015). Puede que eventualmente los fije en una versión, pero no está muy arriba en mi lista de prioridades, así que...

información relacionada