Próbowałem skompilować FFMPEG, aby móc go używać z moją aplikacją Android z poleceniami. Rezultatem powinien być 1 plik statyczny "ffmpeg", który nie jest zależny od pakietu. Nie .to pliki.Skompiluj FFMPEG do użycia linii poleceń
Udało mi się skompilować go z GuardianProject i wszystko działa, ale źródło było zbyt stare i brakuje mu potrzebnych opcji. Używam najnowszego Ubuntu na VirtualBox, wszystkie niezbędne elementy są instalowane i aktualizowane (gawk, yasm, aptitude itp.).
Istnieje wiele przykładów w Internecie. Oto problemy, których doświadczyłem przy każdej z opcji, które wypróbowałem. Uprzejmie pomoc z jednej z następujących błędów:
Guardian project - udało mi się go skompilować i pobrać plik ffmpeg ale używa starej wersji ffmpeg, który nie zawiera opcję
"-movFlags faststart"
. Próbowałem rzucić nowe ffmpeg (2.3.3) tam, ale po prostu wyrzuca błąd. (Uruchomiłem inicjalizację i aktualizację git submodule)JayH5 - Bardziej ogólny plik kompilacji, który powinien działać z każdym plikiem ffmpeg. Zaktualizowałem skrypt budujący do pracy z najnowszym NDK i wygląda na to, że działa, ale nie zawodzi
/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.
Czytałem o tym i wydaje się, że wymaga hack, którego nie rozumiem, jak zaimplementować.Trovao - jest to bardzo ładny projekt i skrypt kompilacji nawet pobiera najnowsze ffmpeg i X264 źródeł, a ja nawet udało się kompilowanie go do plików FFmpeg i X264, ale kiedy go używać, otrzymuję ten błąd:
could not load library "libx264.so.142
co jest dziwne, ponieważ jest tam x264, a cała idea tego projektu polega na anulowaniu potrzeby plików .so.
Byłbym wdzięczny za pomoc w ustaleniu, jak rozwiązać jeden z problemów. Wolę za pomocą JayH5 zbudować skrypt, jak się wydaje najbardziej proste tam ...
JayH5 zbudować plik:
#!/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 \
Bez zmian! Dodałem '$ ADDITIONAL_CONFIGURE_FLAG' w opcjach' configure'. Dodałem go przed konfiguracją ... bez żadnych zmian :( –
Jaka jest wartość $ ADDITIONAL_CONFIGURE_FLAG? –