Я пытался скомпилировать FFMPEG, поэтому я могу использовать его с моим приложением Android с командами. Результатом должен быть 1 статический файл «ffmpeg», который не зависит от пакета. Нет .so файлов.Компиляция FFMPEG для использования в командной строке
Мне удалось скомпилировать его с guardianProject, и все работает, но источник был слишком старым и у меня нет необходимых параметров. Я использую последнюю версию Ubuntu на VirtualBox, все необходимые вещи установлены и обновлены (gawk, yasm, aptitude и т. Д.).
В Интернете есть несколько примеров. Вот те проблемы, которые я испытал с каждым из вариантов, которые я пробовал. Я ценю помощь ни одной из следующих ошибок:
Guardian project - мне удалось скомпилировать и получить файл FFmpeg, но он использует старую версию FFmpeg, которая не включает опцию
"-movFlags faststart"
. Я пытался бросить новый ffmpeg (2.3.3) там, но он просто порождает ошибку. (Я запускал git subodule init и update)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.
Я читал об этом, и, похоже, он требует взлома, который я не понимаю, как реализовать.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 \
Без изменений! Я добавил '$ ADDITIONAL_CONFIGURE_FLAG' в опции' configure'. Я добавил его перед настройкой ... никаких изменений :( –
Каково значение $ ADDITIONAL_CONFIGURE_FLAG? –