Android용 Freetype2를 사용하여 FFmpeg를 빌드하는 방법

Android용 Freetype2를 사용하여 FFmpeg를 빌드하는 방법

OSX Yosemite에서 freetype 라이브러리가 포함된 FFmpeg를 빌드하려고 합니다(drawtext 필터에 필요합니다). 불행히도 ffmpeg를 제대로 구성할 수 없으며 모든 시도가 "freetype notfound" 오류로 끝납니다.

  1. 자유형 없이 일반 FFmpeg-2.5.3을 빌드하는 것은 완벽하게 잘 작동합니다.이것지도 시간)
  2. Freetype-2.5.3 빌드도 잘 작동합니다.이것지도 시간)
  3. 내장형 프리타입이 있는 추가 라이브러리 위치가 포함되어 있습니다.

이와 같이:

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

config.log의 마지막 3줄:

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

미리 감사드립니다. (그리고 영어가 서툴러서 죄송합니다.)

추신: 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 빌드의 Guardian 프로젝트 버전(명령줄 출력용)에서 작동하도록 했습니다. 여기에서 내 포크를 확인하세요.

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

기본적으로 fake-pkg-config를 사용하려면 ffmpeg 구성을 가져와서 매개변수 2(내 포크에 있음) 대신 매개변수 3을 보도록 수정해야 합니다. 포크 버전 상단에 몇 가지 지침이 있습니다. 방금 테스트 빌드를 실행해 보았는데, 그에 따르면 ffmpeg/libavutil/arm/intmath.h에 있는 주석 수정 부분은 무시하셔도 됩니다. ffmpeg/configure 변경을 수행하십시오.

원래 ffmpeg/configure 변경은 config_ffmpeg.sh의 패치로 이루어졌는데, 패치를 완전히 제거하고 새로 만들지는 않았습니다. 하위 모듈 버전을 업데이트한 후에는 패치가 더 이상 유효하지 않습니다.

그리고 참고로 저는 ndk r10c 버전을 사용하고 있습니다.

ffmpeg, freetype2 및 x264는 오늘(2015년 2월 8일) 기준으로 모두 마스터가 되어야 합니다. 결국에는 특정 버전에 고정할 수도 있지만 우선순위 목록에서는 그리 높지 않습니다. 그래서...

관련 정보