Android 用 Freetype2 で FFmpeg をビルドする方法

Android 用 Freetype2 で FFmpeg をビルドする方法

OSX Yosemite で、freetype ライブラリを含めた FFmpeg をビルドしようとしています (drawtext フィルターに必要です)。残念ながら、ffmpeg を適切に構成できず、試行するたびに「freetype が見つかりません」というエラーで終わります。

  1. freetypeを使わずにFFmpeg-2.5.3をビルドすると、問題なく動作します(これチュートリアル)
  2. Freetype-2.5.3のビルドも問題なく動作します(これチュートリアル)
  3. ビルドされたFreeTypeが配置されている追加のライブラリの場所が含まれています。

このような:

--extra-ldflags="-L$PREFIX/lib" 
--extra-cflags="-I$PREFIX/include -I$PREFIX/include/freetype2"
  1. ./build_android.sh結局ERROR: freetype2 not found

ビルド_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

config.log の最後の 3 行:

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

よろしくお願いします(英語が下手で申し訳ありません)

PS: guardian-project のパッチ ソースを確認したところ、次のことがわかりました:

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

Linux に移行する必要があるということですか? OSX には pkg-config がインストールされていないのですか?

algakzru$ pkg-config --version
0.28

答え1

私はこれを ffmpeg ビルドのガーディアン プロジェクト バージョン (コマンド ライン出力用) で動作させました。ここで私のフォークを参照してください:

参考:

基本的に、ffmpeg を fake-pkg-config を使用するように構成し、それを変更して、param 2 (これは私のフォークにあります) ではなく param 3 を参照するようにする必要があります。フォークされたバージョンの先頭にいくつかの指示があります。テスト ビルドを実行したところ、ffmpeg/libavutil/arm/intmath.h のコメントを修正する部分は無視できます。ffmpeg/configure の変更だけを実行してください。

もともと、ffmpeg/configure の変更は config_ffmpeg.sh のパッチで行われていましたが、パッチを完全に削除し、新しいパッチは作成しませんでした。サブモジュールのバージョンを更新した後、パッチは有効ではなくなりました。

また、参考までに、ndk r10c バージョンを使用しています。

ffmpeg、freetype2、x264 は、今日 (2015 年 2 月 8 日) 時点ですべてマスターになるはずです。最終的にはバージョンを固定するかもしれませんが、優先順位はそれほど高くないので...

関連情報