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

有人成功编译

用cygwin和android ndkr9c在windows上的ffmpeg-2.2.2?

或者可以指出我最新的教程?

(http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/不适合我
我得到Makefile:2:config.mak:没有这样的文件……
cygwin admin devel gnome已完全安装并生成-v ok)

我需要将视频转换为图像(用于动态壁纸)…你知道更好吗?
方法还是ffmpeg最好?

谢谢

解决方法

从罗马的 tutorial开始.
以下更改适用于Windows:您应该使用NDK make.exe,而不是来自cygwin的.所以,我只是在build_android.sh中写了d:/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 for ./configure,而不是按照步骤2中所述修改./configure文件.

在我的机器上,我没有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

我修补了library.mak文件,如下所示:for $(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,$$<))
$$(LD) $(SHFLAGS) $(LDFLAGS) $$(LD_O) @$(SUBDIR)lib$(NAME).list $(FFEXTRALIBS)

..从那里开始,顺利进行.

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

PPS:这是another article,有助于为Android构建和使用ffmpeg.

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...