Como construir FFmpeg com Freetype2 para Android

Como construir FFmpeg com Freetype2 para Android

No OSX Yosemite estou tentando construir o FFmpeg com a biblioteca freetype incluída (preciso dela para o filtro drawtext). Infelizmente não consigo configurar o ffmpeg corretamente e cada tentativa termina com o erro "freetype não encontrado".

  1. Construir FFmpeg-2.5.3 simples sem freetype funciona perfeitamente bem (seguidoessetutorial)
  2. Construir o Freetype-2.5.3 também funciona bem (seguidoessetutorial)
  3. Locais de biblioteca extras incluídos, onde o freetype construído está localizado,

assim:

--extra-ldflags="-L$PREFIX/lib" 
--extra-cflags="-I$PREFIX/include -I$PREFIX/include/freetype2"
  1. ./build_android.shacaba comERROR: 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 linhas de config.log :

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

Agradecemos antecipadamente (e desculpe pelo meu péssimo inglês)

PS: Verifiquei as fontes de patch no projeto Guardian e encontrei isto:

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

Isso significa que tenho que mudar para o Linux? O pkg-config não está instalado no OSX?

algakzru$ pkg-config --version
0.28

Responder1

Consegui que isso funcionasse com a versão do projeto Guardian do ffmpeg build (para uma saída de linha de comando). Veja meu garfo aqui:

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

Essencialmente, você precisa configurar o ffmpeg para usar o fake-pkg-config e modificá-lo para ver o parâmetro 3 em vez do parâmetro 2 (que está no meu fork). Existem algumas instruções no topo da versão bifurcada. Acabei de executar uma compilação de teste e, de acordo com isso, você pode ignorar a parte sobre como corrigir os comentários em ffmpeg/libavutil/arm/intmath.h. Basta fazer a alteração ffmpeg/configure.

Originalmente, a alteração do ffmpeg/configure foi feita com um patch em config_ffmpeg.sh, mas removi totalmente os patches e não fiz um novo. Os patches não eram mais válidos após a atualização das versões do submódulo.

Além disso, para referência, estou usando a versão ndk r10c.

ffmpeg, freetype2 e x264 devem ser master a partir de hoje (08/02/2015). Posso eventualmente fixá-los em uma versão, mas não está no topo da minha lista de prioridades, então...

informação relacionada