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

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

Ffmpeg-2.2.2 на окнах с cygwin и android ndkr9c?

Или можете указать мне на обновление учебника?

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

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

спасибо

Solutions Collecting From Web of "Как скомпилировать ffmpeg-2.2.2 на окнах с cygwin и android ndk r9c"

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

Следуя инструкциям, не забудьте установить

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

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

С помощью ffmpeg 2.2 вы можете использовать --target-os=android для ./configure , вместо mangling ./configure как описано в шаге 2 .

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

 echo 'cat $3' > ./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" 

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

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

 --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) следующим образом: для $(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 компилированные #!/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 (подпапку в папку / andoid-ndk / sources / ffmpeg / android) в Windows (Host). Я попробовал ее для Window, но закончил много ошибок, наконец установил Ubuntu (Free) На виртуальном боксе. Вам также придется скачать Andoid (SDK, Ndk) и JDK. Это может показаться странным, но это сработало для меня.