Wie man FFmpeg mit Freetype2 für Android erstellt

0

Unter OSX Yosemite versuche ich, FFmpeg mit eingeschlossener Freetype-Bibliothek zu erstellen (ich benötige es für den DrawText-Filter). Leider kann ich ffmpeg nicht richtig konfigurieren und jeder Versuch endet mit dem Fehler "Freetype nicht gefunden".

  1. Das Erstellen von einfachem FFmpeg-2.5.3 ohne Freetype funktioniert einwandfrei (folgt diesem Tutorial)
  2. Das Erstellen von Freetype-2.5.3 funktioniert auch einwandfrei (folgt diesem Tutorial)
  3. Inklusive zusätzlicher Bibliotheksstandorte, an denen sich der gebaute Freetype befindet.

so was:

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

Letzte 3 Zeilen von config.log:

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

Vielen Dank im Voraus (und Entschuldigung für mein schlechtes Englisch)

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

# 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 unter OSX installiert?

algakzru$ pkg-config --version
0.28
阿尔曼
quelle

Antworten:

0

Ich habe dies mit der Guardian-Projektversion von ffmpeg build (für eine Befehlszeilenausgabe) zum Laufen gebracht. Siehe meine Gabel hier:

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

Im Wesentlichen müssen Sie die Konfiguration von ffmpeg für die Verwendung von fake-pkg-config erhalten und diese so ändern, dass sie sich Parameter 3 anstelle von Parameter 2 (der sich in meinem Zweig befindet) ansieht. Oben auf der Gabelversion befinden sich einige Anweisungen. Ich habe gerade einen Test-Build ausgeführt, und dementsprechend können Sie den Teil über das Korrigieren der Kommentare in ffmpeg / libavutil / arm / intmath.h ignorieren. Führen Sie einfach die Änderung von ffmpeg / configure durch.

Ursprünglich wurde die Änderung von ffmpeg / configure 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 dem Update der Submodul-Versionen nicht mehr gültig.

Als Referenz verwende ich auch die ndk r10c-Version.

ffmpeg, freetype2 und x264 sollten ab heute (08.02.2015) Master sein. Ich kann sie irgendwann an eine Version anheften, aber es steht nicht sehr hoch auf meiner Prioritätenliste, also ...

Kevin Galligan
quelle