2014-09-02 4 views
9

Я пытался скомпилировать FFMPEG, поэтому я могу использовать его с моим приложением Android с командами. Результатом должен быть 1 статический файл «ffmpeg», который не зависит от пакета. Нет .so файлов.Компиляция FFMPEG для использования в командной строке

Мне удалось скомпилировать его с guardianProject, и все работает, но источник был слишком старым и у меня нет необходимых параметров. Я использую последнюю версию Ubuntu на VirtualBox, все необходимые вещи установлены и обновлены (gawk, yasm, aptitude и т. Д.).

В Интернете есть несколько примеров. Вот те проблемы, которые я испытал с каждым из вариантов, которые я пробовал. Я ценю помощь ни одной из следующих ошибок:

  1. Guardian project - мне удалось скомпилировать и получить файл FFmpeg, но он использует старую версию FFmpeg, которая не включает опцию "-movFlags faststart". Я пытался бросить новый ffmpeg (2.3.3) там, но он просто порождает ошибку. (Я запускал git subodule init и update)

  2. JayH5 - Более общий файл сборки, который в основном должен работать с каждым ffmpeg. Я обновил сценарий сборки, чтобы работать с последним NDK, и, похоже, работает, но не работает /home/dor/Desktop/ndk/android-ndk-r10/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail. Я читал об этом, и, похоже, он требует взлома, который я не понимаю, как реализовать.

  3. Trovao - это очень хороший проект и сценарий сборки даже загружает последние FFmpeg и x264 источников, и я даже смог создать его FFmpeg и x264 файлов, но когда я использую его, я получаю эту ошибку: could not load library "libx264.so.142 что странно, поскольку x264 есть, и вся идея этого проекта заключается в отмене необходимости .so-файлов.

Я был бы признателен за помощь в выяснении путей решения любых проблем. Я предпочитаю использовать JayH5 построить сценарий, как это кажется наиболее прямо вперед там ...

JayH5 построить файл:

#!/bin/bash 

# set the base path to your Android NDK (or export NDK to environment) 

if [[ "x$NDK_BASE" == "x" ]]; then 
    NDK_BASE=/opt/android-ndk 
    echo "No NDK_BASE set, using $NDK_BASE" 
fi 

NDK_PLATFORM_VERSION=14 
NDK_ABI=arm 
NDK_COMPILER_VERSION=4.8 
NDK_SYSROOT=$NDK_BASE/platforms/android-$NDK_PLATFORM_VERSION/arch-$NDK_ABI 
NDK_UNAME=`uname -s | tr '[A-Z]' '[a-z]'` # Convert Linux -> linux 
HOST=$NDK_ABI-linux-androideabi 
NDK_TOOLCHAIN_BASE=$NDK_BASE/toolchains/$HOST-$NDK_COMPILER_VERSION/prebuilt/$NDK_UNAME-x86 
CC="$NDK_TOOLCHAIN_BASE/bin/$HOST-gcc --sysroot=$NDK_SYSROOT" 
LD=$NDK_TOOLCHAIN_BASE/bin/$HOST-ld 

BUILD_PATH=build/ffmpeg 

./configure \ 
$DEBUG_FLAG \ 
--arch=arm \ 
--target-os=linux \ 
--enable-runtime-cpudetect \ 
--enable-pic \ 
--disable-shared \ 
--enable-static \ 
--cross-prefix=$NDK_TOOLCHAIN_BASE/bin/$NDK_ABI-linux-androideabi- \ 
--sysroot="$NDK_SYSROOT" \ 
--extra-cflags="-march=armv7-a -mfloat-abi=softfp -fPIC -DANDROID" \ 
--extra-ldflags="" \ 
--enable-ffmpeg \ 
--disable-ffplay \ 
--disable-ffprobe \ 
--disable-ffserver \ 
--disable-network \ 

ответ

4

После 2 дней компиляции FFmpeg файлы, которые просто не работают, Я, наконец, преуспел!

В приведенном выше файле build.sh просто добавьте эти 4 строки и снизу, чтобы избежать ошибки prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail.

Добавить в файл:

$ADDITIONAL_CONFIGURE_FLAG 
make clean 
make 
make install 

Не забудьте chmod 775 ffmpeg файл после завершения процесса. Надеюсь, это поможет другим!

Если вы хотите FFMPEG с поддержкой libX264, используйте этот проект - просто отлично. https://github.com/hiteshsondhi88/ffmpeg-android/

+0

Без изменений! Я добавил '$ ADDITIONAL_CONFIGURE_FLAG' в опции' configure'. Я добавил его перед настройкой ... никаких изменений :( –

+0

Каково значение $ ADDITIONAL_CONFIGURE_FLAG? –

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