2014-09-02 12 views
9

FFMPEG'i derlemeye çalışıyorum, böylece Android uygulamamla komutları kullanarak kullanabilirim. Sonuç, pakete bağımlı olmayan 1 statik dosya, "ffmpeg" olmalıdır. Hayır .so dosyaları.Komut satırı kullanımı için FFMPEG'yi derleyin

GuardianProject ile derledim ve her şey çalışıyor ama kaynak çok eskiydi ve ihtiyacım olan seçenekler yok. VirtualBox'taki en yeni Ubuntu'yu kullanıyorum, tüm gerekli özellikler yüklenir ve güncellenir (gawk, yasm, aptitude, etc ...).

Web'in çevresinde çok sayıda örnek var. Denediğim seçeneklerin her birinde yaşadığım sorunlar. Bunu derlemek ve ffmpeg dosyasını başardı ancak "-movFlags faststart" seçeneği içermez Ffmpeg eski bir sürümünü kullanıyor -

  1. Guardian project: Ben aşağıdaki hatalardan birini kullanarak yardım takdir ediyorum. Yeni ffmpeg'i (2.3.3) oraya atmayı denedim ama sadece hata veriyor. (Git altmodule init ve update).

  2. JayH5 - Temel olarak her ffmpeg ile çalışacak daha genel bir yapı dosyası. En son NDK ile çalışmak için derleme komut dosyasını güncelleştirdim ve çalışıyor gibi görünüyor, ancak bu konuda okurum ve bu nasıl çalıştığını anlayamıyorum bir kesmek gerektiriyor gibi görünüyor /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 - Bu çok güzel bir proje ve yapı komut dosyası hatta en son ffmpeg ve x264 kaynakları indirir, ve hatta FFMPEG ve X264 dosyalarına bunu derleme başardı ama bunu kullanırken, bu hatayı alıyorum: could not load library "libx264.so.142 Bu garip, x264 var ve bu projenin tüm fikri .so dosyaları ihtiyacını iptal etmektir.

Sorunlardan herhangi birinin nasıl çözüleceğinin belirlenmesi konusunda yardımcı olmaktan memnuniyet duyarım. Ben

JayH5 dosyasını oluşturmak ... dışarısı, en dolaysız göründüğü gibi JayH5 komut dosyasını oluşturmak kullanmayı tercih: sadece işe yaramadı FFMPEG dosyaları derleme 2 gün sonra

#!/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 \ 

cevap

4

, Sonunda başardım!

Yukarıdaki build.sh dosyasında, prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail hatadan kaçınmak için bu 4 satırı ve tabanı ekleyin.

Ekle dosyaya: işlemi tamamlandıktan sonra

$ADDITIONAL_CONFIGURE_FLAG 
make clean 
make 
make install 

chmod 775 ffmpeg dosyaya unutmayın. Gerçekten umarım bu başkalarına yardım eder!

Eğer libX264 desteği ile FFMPEG'i istiyorsanız, bu projeyi kullanın - sadece mükemmel. https://github.com/hiteshsondhi88/ffmpeg-android/

+0

Değişiklik yok! 'Configure' seçeneklerinde '$ ADDITIONAL_CONFIGURE_FLAG' eklendi. Yapılandırmadan önce ekledim ... değişiklik yok :( –

+0

$ ADDITIONAL_CONFIGURE_FLAG'ın değeri nedir? –