So erstellen Sie FFmpeg mit Freetype2 für Android

So erstellen Sie FFmpeg mit Freetype2 für Android

Unter OSX Yosemite versuche ich, FFmpeg mit der Freetype-Bibliothek zu erstellen (ich brauche sie für den Drawtext-Filter). Leider kann ich ffmpeg nicht richtig konfigurieren und jeder Versuch endet mit der Fehlermeldung „Freetype nicht gefunden“.

  1. Das Erstellen von einfachem FFmpeg-2.5.3 ohne Freetype funktioniert einwandfrei (gefolgtDasLernprogramm)
  2. Das Erstellen von Freetype-2.5.3 funktioniert ebenfalls einwandfrei (gefolgtDasLernprogramm)
  3. Eingeschlossen sind zusätzliche Bibliotheksstandorte, an denen sich der eingebaute Freetype befindet,

so was:

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

Letzte 3 Zeilen von config.log:

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

Vielen Dank im Voraus (und entschuldigen Sie mein schlechtes Englisch)

PS: Ich habe die Patch-Quellen im Guardian-Projekt überprüft und Folgendes gefunden:

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

Bedeutet das, dass ich auf Linux umsteigen muss? Ist pkg-config nicht auf OSX installiert?

algakzru$ pkg-config --version
0.28

Antwort1

Ich habe es mit der Guardian-Projektversion des ffmpeg-Builds zum Laufen gebracht (für eine Befehlszeilenausgabe). Hier ist mein Fork:

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

Im Wesentlichen müssen Sie die ffmpeg-Konfiguration so einrichten, dass sie die fake-pkg-config verwendet, und diese so ändern, dass sie Parameter 3 statt Parameter 2 betrachtet (was in meinem Fork der Fall ist). Oben in der gegabelten Version finden Sie einige Anweisungen. Ich habe gerade einen Test-Build ausgeführt, und demnach können Sie den Teil über das Korrigieren der Kommentare in ffmpeg/libavutil/arm/intmath.h ignorieren. Nehmen Sie einfach die Änderung in ffmpeg/configure vor.

Ursprünglich wurde die ffmpeg/configure-Änderung mit einem Patch in config_ffmpeg.sh durchgeführt, aber ich habe die Patches vollständig entfernt und keinen neuen erstellt. Die Patches waren nach der Aktualisierung der Submodulversionen nicht mehr gültig.

Als Referenz verwende ich außerdem die NDK R10C-Version.

ffmpeg, freetype2 und x264 sollten ab heute (08.02.2015) alle Master sein. Vielleicht werde ich sie irgendwann an eine Version binden, aber das hat auf meiner Prioritätenliste keine hohe Priorität, also …

verwandte Informationen