Как скомпилировать ffmpeg-2.2.2 в windows с cygwin и android ndk r9c

кто-то успешно скомпилировал

ffmpeg-2.2.2 на windows с cygwin и android ndkr9c ?

или может указать мне на современный учебник ?

(http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/ не работает для меня я получаю Makefile: 2: config.mak: нет такого файла... cygwin admin devel gnome полностью установлен и make-V ok)

Мне нужно преобразовать видео в изображения (для живых обоев)... вы знаете лучше метод или ffmpeg лучший ?

thx

3 ответов


начните с Романов учебник. Следующие изменения применяются к Windows: вы должны использовать NDK make.exe, а не из cygwin. Итак, я просто написал d:/dev/Android/ndk/prebuilt/windows-x86_64/bin/make.exe в моем build_android.sh. По какой-то странной причине я не мог бежать make clean - но я просто решил пока игнорировать эту проблему.

после урока, не забудьте установить

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64

кроме того, используйте пути смешанного стиля, т. е. d:/dev/whatever и не cygwin стиль /cygdrive/d/dev/whatever. Будьте осторожны, чтобы не использовать пути с пробелами - ни ndk установки, ни для ffmpeg git клон.

С ffmpeg 2.2, вы можете использовать --target-os=android на ./configure, вместо коверкания ./configure файл, как описано в Шаг 2.

на моей машине, у меня не было pr и od команды. Я решил просто подделать их, написав

echo 'cat ' > ./pr
echo 'echo od' > ./od

они не испортить строй.

Итак, мой процесс сборки выглядит следующим образом:

git clean -d -f -x
./configure --enable-shared --disable-static --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-avdevice --disable-doc --disable-symver --cross-prefix=d:/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/arm-linux-androideabi- --target-os=android --arch=arm --enable-cross-compile --sysroot=d:/android-ndk-r9c/platforms/android-9/arch-arm/ --extra-cflags="-Os -fpic"

компиляция отображает некоторые предупреждения, но .так что все файлы созданы.

чтобы включить неон, я использовал

--extra-cflags="-Os -fpic -marm -march=armv7-a -mfloat-abi=softfp -mfpu=neon"
--extra-ldflags="-Wl,--fix-cortex-a8"

теперь libavcodec.so больше не может быть построен: слишком много файлов в списке компоновщика. Итак, после того, как он разбился, я запустил компоновщик вручную:

$ d:/Dev/Android/ndk/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64//bin/arm-linux-androideabi-gcc  -shared -Wl,-Bsymbolic -Wl,--version-script,libavcodec/libavcodec.ver -Llibavcodec -Llibavdevice -Llibavfilter -Llibavformat -Llibavresample -Llibavutil -Llibpostproc -Llibswscale -Llibswresample -Wl,--fix-cortex-a8  --sysroot=d:/Dev/Android/ndk/platforms/android-9/arch-arm/ -isysroot d:/Dev/Android/ndk/platforms/android-9/arch-arm/ -Wl,--as-needed -Wl,--warn-common -Wl,-rpath-link=libpostproc:libswresample:libswscale:libavfilter:libavdevice:libavformat:libavcodec:libavutil:libavresample @libavcodec/libavcodec.list -lswresample -lavutil -lm -lz -pthread -o libavcodec/libavcodec.so.55

я патч как образом:$(SUBDIR)$(SLIBNAME_WITH_MAJOR) заменить

$$(LD) $(SHFLAGS) $(LDFLAGS) $$(LD_O) $$(filter %.o,$$^) $(FFEXTRALIBS)

С

$(Q)echo >$(SUBDIR)lib$(NAME).list $(wordlist 1,400,$(filter %.o,$$<))
$(Q)echo >>$(SUBDIR)lib$(NAME).list $(wordlist 401,999,$(filter %.o,$$<))
$$(LD) $(SHFLAGS) $(LDFLAGS) $$(LD_O) @$(SUBDIR)lib$(NAME).list $(FFEXTRALIBS)

.. и оттуда, make гладко.

PS: я make -n libavcodec/libavcodec.so.55 для подготовки ответ libavcodec/libavcodec.list.

PPS: здесь еще одна статья это помогает создавать и использовать ffmpeg для Android.


вы можете использовать это как build_android.sh я протестировал его, и он работал со мной

#!/bin/bash
NDK=D:/android/ndk/android-ndk-r10d
SYSROOT=$NDK/platforms/android-8/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/windows
function build_one
{
./configure \
--prefix=$PREFIX \
--disable-shared \
--enable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-avdevice \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=linux \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one

вам также необходимо выполнить следующие команды:

dos2unix build_android.sh
chmod +x build_android.sh
./build_android.sh

использовать в этом уроке как ссылка


создайте его на Ubuntu (гостевой) и скопируйте папку lib (sub folder in/andoid-ndk/sources/ffmpeg / android) в Windows(хост).Я попробовал его для окна, но закончил с большим количеством ошибок, наконец, установил Ubuntu (бесплатно) на virtualbox. также вам придется скачать Andoid (SDK, Ndk) и JDK. Это может показаться странным, но это сработало для меня.