![So erstellen Sie FFmpeg mit Freetype2 für Android](https://rvso.com/image/1438147/So%20erstellen%20Sie%20FFmpeg%20mit%20Freetype2%20f%C3%BCr%20Android.png)
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“.
- Das Erstellen von einfachem FFmpeg-2.5.3 ohne Freetype funktioniert einwandfrei (gefolgtDasLernprogramm)
- Das Erstellen von Freetype-2.5.3 funktioniert ebenfalls einwandfrei (gefolgtDasLernprogramm)
- 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"
./build_android.sh
endet 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 …