Как скомпилировать 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. Это может показаться странным, но это сработало для меня.