彩运网网址-彩运网网上登录

在 Windows 7 下使用 Android NDK r5c 编译 FFmpeg 0.7.1

彩运网网址,在代号是 “Love”的 FFmpeg 0.8 正式版几个小时之后,代号为 “Peace”FFmpeg 0.7.1 也发布了。没想到啊,我还以为直接是从 0.7 RC1 升到 0.8,不会再有 FFmpeg 0.7.x 的版本了呢。爱与和平,呵呵,原来如此,0.7 RC1 的代号就是 “Love and Peace”。

这次使用 ndk r14 进行对 ffmpeg 3.2.4编译,使其能移植到Android下使用

因为之前已经写了 在 Mac OS X 下使用 Android NDK r5b 编译 FFmpeg 0.8在 Ubuntu 下使用 Android NDK r4b 编译 FFmpeg 0.6.3 两篇随笔,所以干脆把 Windows 7 下的编译方法也写出来了。这样在3个操作系统下用3个 NDK 版本编译3个 FFmpeg 版本的方法就都有了,应该是互联网上最全的系列了。

彩运网网址 1

之前一直没写如何在 Windows 下编译 FFmpeg 是因为在 Windows 下编译除了需要 NDK 之外还需要一个 Cygwin,配置起来虽然说不上麻烦但也确实不算容易。除了让人抓狂的路径问题之外,居然还有更变态参数长度限制,真是祸不单行,╮(╯▽╰)╭

之前尝试在window 10环境下用NDK对FFmpeg进行编译,发现坑太多,各种路径不认。最后还是决定在虚拟机上安装Ubuntu再对其编译。

下面我将介绍在 Windows 下使用 NDK 编译 FFmpeg 的方法,以及如何解决上面提到的那些问题。时间关系,没做深究,解决方法可能不算完美。要是你有更好的解决方法,希望你能告诉我,谢谢。

前期准备:
1.安装好虚拟机,这里之前安装的是VirtualBox 5.0.26的版本
2.在虚拟机上安装Ubuntu,这里采用的是ubuntu 14.04 LTS的版本
3.下载Linux版的NDK NDK官方下载地址
4.FFmpeg的源码 官方地址

相关阅读:

这里建议直接在Ubuntu里下载,文件要是在window下打开过,可能出现不同系统的字符问题

在 Mac OS X 下使用 Android NDK r5b 编译 FFmpeg 0.8 http://www.linuxidc.com/Linux/2011-09/42692.htm

一 、下载FFmpeg的源码后,解压到某个目录下,最好路径里面不带中文
比如我放的位置就是这样 /home/clam/ffmpeg/ffmpeg-3.2.4

Ubuntu 下使用 Android NDK r4b 编译 FFmpeg 0.6.3  http://www.linuxidc.com/Linux/2011-09/42691.htm

二、下载好的NDK也解压到某个目录下,同样最好路径里不带中文
比如我的/home/clam/ndk/android-ndk-r14

在Ubuntu中用Android NDK编译FFmpeg  http://www.linuxidc.com/Linux/2011-09/42694.htm

三、编写脚本,用于指定对编译器的配置等。脚本最好在Ubuntu下编写,window下的回车符是CR LF ,Linux下的是LF,两者不兼容。也可以在Linux下执行命令 dos2unix file.txt

一、下载 Cygwin 2.738、Android NDK r5c 和 FFmpeg  0.7.1

脚本build.sh如下:

  1. Cygwin 2.738
  2. Android NDK r5c
  3. FFmpeg  0.7.1
#!/bin/bash  
#这里修改为你的ndk的路径
NDK=/home/clam/ndk/android-ndk-r14
#注意android-9文件夹的版本号,替换好自己的版本号。下面的路径同理 
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
function build_one(){
 ./configure 
--prefix=$PREFIX 
--enable-shared 
--disable-static 
--disable-doc 
--disable-ffserver 
--enable-cross-compile 
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- 
--target-os=linux 
--arch=arm 
--sysroot=$SYSROOT 
--extra-cflags="-Os -fpic $ADDI_CFLAGS" 
--extra-ldflags="$ADDI_LDFLAGS" 
$ADDITIONAL_CONFIGURE_FLAG
}
CPU=arm  
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one

 

将脚本放到ffmpeg源码的根目录下,这里是 /home/clam/ffmpeg/ffmpeg-3.2.4/build.sh

二、安装 Cygwin 2.738

四、同时还有修改一下ffmpeg源码下config文件
打开/home/clam/ffmpeg/ffmpeg-3.2.4/config,最好在ubuntu下操作。查找出下面这段。这里是指定打包后的名字,不修改的话,编译出来的版本如下libavcodec.so.56 Android下面是不认的。因此需要修改一下

Cygwin 的安装过程还算简单,但要记得把 GUN make 3.81-2 和 GUN awk 3.1.8-1 安装上。

SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'
SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'

彩运网网址 2

将上面的内容修改如下:

GUN awk 3.1.8-1 是默认安装的,不需要特意去勾选安装。

SLIBNAME_WITH_VERSION='$(SLIBNAME).$(LIBVERSION)'
SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'
LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'
SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'
SLIB_INSTALL_LINKS='$(SLIBNAME)'

本文由彩运网网址发布于网络安全,转载请注明出处:在 Windows 7 下使用 Android NDK r5c 编译 FFmpeg 0.7.1

相关阅读