Android кросс-компиляция ffmpeg - PullRequest
1 голос
/ 11 мая 2011

Есть ли возможность динамически компилировать FFMPEG под ARM (Android NDK)? (Я нашел только статьи о статической компиляции) И второй вопрос: при сборке FFMPEG я не могу найти файлы Makefile.am. Могут ли они так или иначе получить это?

1 Ответ

2 голосов
/ 08 декабря 2011

Я выбрал этот набор инструментов для наиболее часто используемого 4.4.0 gcc при компиляции, так как большинство продуктов arm linux его используют, вы можете изменить его по своему вкусу, я не знаю, будет ли он работать с заменами, поэтому, пожалуйста, не спрашивайте,Я запускал команду ./configure сотни раз, прежде чем получил успешную сборку.Поэтому я делюсь тем, что сработало, может быть, это поможет вам.

Использование UBUNTU 32-bit 10.04.03 в VirtuaBox Guest / Host - это Vista 64

Измените <USERNAME> на ваше имя пользователя linux

mkdir /home/<USERNAME>/applications
cd /home/<USERNAME>/applications
wget http://dl.google.com/android/ndk/android-ndk-r5b-linux-x86.tar.bz2
wget http://ffmpeg.org/releases/ffmpeg-0.8.7.tar.bz2
tar -xjf android-ndk-r5b-linux-x86.tar.bz2
tar -xjf ffmpeg-0.8.7.tar.bz2
mv ffmpeg-0.8.7 ffmpeg

NDK=/home/<USERNAME>/applications/android-ndk-r5b
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-8 --toolchain=arm-eabi-4.4.0 --install-dir=/home/<USERNAME>/applications/droidtooleabi

cd ffmpeg
export PATH=/home/<USERNAME>/applications/droidtooleabi/bin:$PATH
export CC=arm-linux-androideabi-gcc
./configure \
--target-os=linux \
--cross-prefix=arm-eabi- \
--arch=arm \
--enable-small \
--disable-armvfp \
--prefix=../build/ffmpeg \
--disable-encoders \
--disable-decoders \
--disable-protocols \
--disable-muxers \
--disable-demuxers \
--disable-parsers \
--disable-devices \
--enable-decoder=mp3 \
--enable-decoder=vorbis \
--enable-decoder=alac \
--enable-decoder=mpeg4 \
--enable-decoder=vp8 \
--enable-decoder=flac \
--enable-decoder=pcm_s8 \
--enable-decoder=pcm_u8 \
--enable-decoder=h264 \
--enable-decoder=h263 \
--enable-encoder=adpcm_swf \
--enable-decoder=adpcm_swf \
--enable-encoder=nellymoser \
--enable-decoder=nellymoser \
--enable-encoder=flv \
--enable-decoder=flv \
--enable-encoder=aac \
--enable-decoder=aac \
--enable-decoder=amrnb \
--enable-decoder=amrwb \
--enable-encoder=pcm_s16le \
--enable-decoder=pcm_s16le \
--enable-muxer=amr \
--enable-demuxer=amr \
--enable-muxer=flv \
--enable-demuxer=flv \
--enable-muxer=pcm_s16le \
--enable-demuxer=pcm_s16le \
--enable-muxer=wav \
--enable-demuxer=wav \
--enable-muxer=matroska \
--enable-demuxer=matroska \
--enable-muxer=matroska_audio \
--enable-demuxer=matroska_audio \
--enable-muxer=m4v \
--enable-demuxer=m4v \
--enable-muxer=mov \
--enable-demuxer=mov \
--enable-muxer=h263 \
--enable-demuxer=h263 \
--enable-muxer=h264 \
--enable-demuxer=h264 \
--enable-muxer=webm \
--enable-demuxer=webm \
--enable-muxer=ogg \
--enable-demuxer=ogg \
--enable-muxer=flac \
--enable-demuxer=flac \
--enable-muxer=mpegts \
--enable-demuxer=mpegts \
--enable-muxer=mpegtsraw \
--enable-demuxer=mpegtsraw \
--enable-muxer=aac \
--enable-demuxer=aac \
--enable-parser=aac \
--enable-parser=h263 \
--enable-parser=h264 \
--enable-parser=vp8 \
--enable-parser=mpegvideo \
--enable-parser=mpegaudio \
--enable-parser=mpeg4video \
--enable-parser=flac \
--enable-protocol=rtmps \
--enable-protocol=rtmpt \
--enable-protocol=crypto \
--enable-protocol=rtmpte \
--enable-protocol=file \
--enable-protocol=pipe \
--enable-protocol=rtp \
--enable-protocol=rtmp \
--enable-protocol=tcp \
--enable-protocol=http \
--enable-protocol=rtmpe \
--enable-protocol=udp \
--disable-ffprobe \
--disable-ffserver \
--extra-cflags='-I/home/<USERNAME>/applications/droidtooleabi/sysroot/usr/include -fpic -mthumb-interwork -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -march=armv5te -mtune=xscale -msoft-float' \
--extra-ldflags='-nostdlib /home/<USERNAME>/applications/droidtooleabi/sysroot/usr/lib/libc.so /home/<USERNAME>/applications/droidtooleabi/sysroot/usr/lib/libm.so -Wl,-rpath-link=/home/<USERNAME>/applications/droidtooleabi/sysroot/usr/lib -L/home/<USERNAME>/applications/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/linux-x86/lib/gcc/arm-eabi/4.4.0' \
--extra-ldflags='-Wl,-dynamic-linker,/system/bin/linker /home/<USERNAME>/applications/droidtooleabi/sysroot/usr/lib/crtbegin_dynamic.o /home/<USERNAME>/applications/droidtooleabi/sysroot/usr/lib/crtend_android.o' \
--extra-libs=-lgcc
...