2014-01-31 3 views
3

Все.Как скомпилировать FFmpeg с x264 и libfdk-aac для Android

Пожалуйста, обратите внимание, что я использую неправильный английский.

Я хочу сделать приложение для кодирования с использованием FFmpeg.

Я успешно строил NDK с FFmpeg.

Однако для кодирования видео H.264 не удалось (код не найден ..).

Мне было известно, что libx264 требуется кодировать H.264, а libfdk-aac необходимо кодировать AAC.

поэтому я попытался построить libx264 и libfdk-aac, но с легкостью перекрестно скомпилировать.

Пожалуйста, скажите мне, что я сделал неправильно.

Мои среды разработки

ОС: Ubuntu 13.10 64bit

NDK: андроид-NDK-г9

FFmpeg: FFmpeg-2.0.2

x26 4 сборки: build_x264_android.sh

NDK=$ANDROID_NDK_HOME 

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64 
PLATFORM=$NDK/platforms/android-9/arch-arm 
CPU=arm 
PREFIX=$NDK/sources/ffmpeg-2.0.2/android/$CPU 

./configure --prefix=$PREFIX \ 
    --enable-shared \ 
    --enable-pic \ 
    --disable-asm \ 
    --disable-cli \ 
    --host=arm-linux \ 
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ 
    --sysroot=$PLATFORM 

make 
make install 
ldconfig 

ФДК-ААС сборки: build_aac_android.sh

NDK=$ANDROID_NDK_HOME 
CROSS_PREFIX=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi- 
PLATFORM=$NDK/platforms/android-9/arch-arm 
CPU=arm 
PREFIX=$NDK/sources/ffmpeg-2.0.2/android/$CPU 
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a -mthumb -D__thumb__" 

./configure --prefix=$PREFIX \ 
    --with-sysroot=$PLATFORM \ 
    --host=arm-linux \ 
    --enable-shared \ 
    --with-pic=no \ 
    CC="${CROSS_PREFIX}gcc --sysroot=$PLATFORM" \ 
    CXX="${CROSS_PREFIX}g++ --sysroot=$PLATFORM" \ 
    RANLIB="${CROSS_PREFIX}ranlib" \ 
    AR="${CROSS_PREFIX}ar" \ 
    STRIP="${CROSS_PREFIX}strip" \ 
    NM="${CROSS_PREFIX}nm" \ 
    CFLAGS="-O3 $OPTIMIZE_CFLAGS --sysroot=$PLATFORM" \ 
    CXXFLAGS="-O3 $OPTIMIZE_CFLAGS --sysroot=$PLATFORM" 

make 
make install 

Когда я бегу 'build_aac_android.sh', показанная ошибка.

войти в config.log

configure:2907: checking for arm-linux-gcc 
configure:2934: result: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/platforms/android-9/arch-arm 
configure:3203: checking for C compiler version 
configure:3212: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/platforms/android-9/arch-arm --version >&5 
./configure: line 3214: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc: No such file or directory 
configure:3223: $? = 127 
configure:3212: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/platforms/android-9/arch-arm -v >&5 
./configure: line 3214: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc: No such file or directory 
configure:3223: $? = 127 
configure:3212: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/platforms/android-9/arch-arm -V >&5 
./configure: line 3214: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc: No such file or directory 
configure:3223: $? = 127 
configure:3212: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/platforms/android-9/arch-arm -qversion >&5 
./configure: line 3214: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc: No such file or directory 
configure:3223: $? = 127 
configure:3243: checking whether the C compiler works 
configure:3265: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc --sysroot=/platforms/android-9/arch-arm -O3 -mfloat-abi=softfp -mfpu=vfpv3-d16 -marm -march=armv7-a -mthumb -D__thumb__ --sysroot=/platforms/android-9/arch-arm conftest.c >&5 
./configure: line 3267: /toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64/bin/arm-linux-androideabi-gcc: No such file or directory 

configure:3312: error: in `/home/nel/android-ndk-r9/sources/ffmpeg-2.0.2/libfdk-aac': 
    configure:3314: error: C compiler cannot create executables 
    See `config.log' for more details 

Я не могу понять, что ошибка !! Я был подтвержден, что arm-linux-androideabi-gcc находится в каталоге.

Я хочу одолжить вам мудрость. Скажите, пожалуйста, как создать ffmpeg + x264 + fdk-aac для Android.

Спасибо .. :-)

ответ

1

Вы можете попробовать/вилку/клонировать мою библиотеку. Он уже компилирует x264 и libfdk-aac. Вы можете использовать любую версию gcc toolchains (например, 4.9) и поддерживать новейшую платформу Android (21).

Вы можете легко построить ffmpeg (2.6 или новейшую версию) из моего репо, выполняющего 2-3 скрипта.

Трудно объяснить, как скомпилировать оба, но вы можете проверить скрипт build_android.sh, который компилирует x264 и libfdk-aac для всех архитектур.

Вы можете прочитать функцию bash build_aac и build_x264, чтобы увидеть, как это было скомпилировано.

РЕПО: https://github.com/matthewn4444/VPlayer_lib

ИНСТРУКЦИЯ: https://github.com/matthewn4444/VPlayer_lib/wiki/Compiling-FFmpeg

0

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

над проектом для Android включает в себя x264. Если вы хорошо разбираетесь в подпроектах git, и если вы хорошо разбираетесь в конструкции NDK с поперечной привязкой, вам должно быть легко следовать строкам.

Если вы этого не сделали, вам нужно будет узнать о построении ffmpeg на linux (нет android). затем изучите NDK-сборки на android, затем изучите подпроекты git, а затем создайте его.

+0

мне нужно включить libfdk-ААС. не найти проект для андроида включает fdk-aac? – Codeveloper

+0

Возможно, этот проект закодирован в AAC? – Codeveloper

+0

Aac может быть добавлен с правильной настройкой конфигурации. Fdk-aac Я не знаю. –

1

Я знаю, что уже поздно. Я только что столкнулся с этой проблемой, и я нашел ваш вопрос.Я решил эту проблему, как показано ниже. Надеюсь, это может помочь некоторым парням, когда они найдут ваш вопрос через Google, как я. Вот как скомпилировать fdk-aac для android. NDK версия 9d

Изменение ANDROID_ROOT и ANDROID_BIN соответственно

export ANDROID_ROOT=/path/to/android-ndk/platforms/android-9/arch-arm 
export ANDROID_BIN=/path/to/android-ndk/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86_64/bin 

export CFLAGS="-DANDROID -fPIC -ffunction-sections -funwind-tables -fstack-protector -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16 -fomit-frame-pointer -fstrict-aliasing -funswitch-loops -finline-limit=300" 

export LDFLAGS="-Wl,--fix-cortex-a8" 
export CC="arm-linux-androideabi-gcc --sysroot=$ANDROID_ROOT" 
export CXX="arm-linux-androideabi-g++ --sysroot=$ANDROID_ROOT" 

export PATH=$ANDROID_BIN:$PATH 

./configure --host=arm-linux-androideabi --with-sysroot="$ANDROID_ROOT" --enable-static --prefix="/tmp" 
make -j4 
make install 

тогда библиотека будет установлена ​​в каталог/TMP. Вы можете изменить его с помощью --prefix выше.

+0

Привет @faraway, ваш код успешно завершен, и я могу включить это в моем проекте FFmpeg и Android. Я добавил файл libfdk-aac.so в свой проект, но когда запускается FFmpeg, я получаю сообщение об ошибке «libfdk-aac.so.1» не найден. FFmpeg, очевидно, связано с «.so.1», где Android использует только «.so». Вы тоже столкнулись с этой проблемой? Любое решение? –

+0

Привет @JonG, Да, я наткнулся на такие вещи. Хотя я действительно не помню, я могу порекомендовать вам создать с включением-static или отключить динамический для fdk-aac configure. Посмотрите флаги для fdk-aac configure. – faraway

Смежные вопросы