如何用cygwin和android ndk r9c在windows上编译ffmpeg-2.2.2

有人成功编译

在Windows与cygwinAndroid ndkr9c的ffmpeg-2.2.2?

或者可以点我一个最新的教程?

( http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/不为我工作我得到的Makefile:2:config.mak:没有这样的文件… cygwinpipe理员devel GNOME是完全安装并使-v可以)

我需要将video转换为图像(对于实时壁纸)…你知道一个更好的方法或ffmpeg最好的吗?

谢谢

从罗马教程开始。 以下更改适用于Windows:应该使用NDK make.exe ,而不是cygwin中的 所以,我只是在我的build_android.sh中写了d:/dev/Android/ndk/prebuilt/windows-x86_64/bin/make.exe /dev/Android/ndk/prebuilt/windows-x86_64/bin/make.exe 出于某种奇怪的原因,我无法运行make clean – 但我现在只是简单地选择忽略这个问题。

在教程之后,不要忘记设置

 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 ,而不是像第2步所描述的那样对./configure文件进行修改。

在我的机器上,我没有prod命令。 我选择了简单地伪造他们,写作

 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 

我修补library.mak文件,如下所示:for $(SUBDIR)$(SLIBNAME_WITH_MAJOR) ,replace

 $$(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) 

从那里,顺利进行。

PS:我用make -n libavcodec/libavcodec.so.55来准备响应文件 libavcodec/libavcodec.list

PPS:这是另一篇文章 ,有助于构建和使用Android的ffmpeg。

你可以使用这个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(Guest)上构建它,并将lib(在/ andoid-ndk / sources / ffmpeg / android)文件夹中的子文件夹复制到Windows(主机)。我尝试了它的窗口,但结束了很多的错误,最后安装Ubuntu(免费)在virtualbox上。 你也必须下载Andoid(SDK,Ndk)和JDK。 这可能听起来很奇怪,但对我来说却很有效。