![Android 用 Freetype2 で FFmpeg をビルドする方法](https://rvso.com/image/1438147/Android%20%E7%94%A8%20Freetype2%20%E3%81%A7%20FFmpeg%20%E3%82%92%E3%83%93%E3%83%AB%E3%83%89%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.png)
OSX Yosemite で、freetype ライブラリを含めた FFmpeg をビルドしようとしています (drawtext フィルターに必要です)。残念ながら、ffmpeg を適切に構成できず、試行するたびに「freetype が見つかりません」というエラーで終わります。
- freetypeを使わずにFFmpeg-2.5.3をビルドすると、問題なく動作します(これチュートリアル)
- Freetype-2.5.3のビルドも問題なく動作します(これチュートリアル)
- ビルドされたFreeTypeが配置されている追加のライブラリの場所が含まれています。
このような:
--extra-ldflags="-L$PREFIX/lib"
--extra-cflags="-I$PREFIX/include -I$PREFIX/include/freetype2"
./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 日) 時点ですべてマスターになるはずです。最終的にはバージョンを固定するかもしれませんが、優先順位はそれほど高くないので...