windows10下编译ffmpeg for android

本文总结众多博文在windows10下编译ffmpeg的经验,并提出在编译过程中遇到的问题以及如何解决。非常详细!

环境:win10 ffmpeg-3.3.6  ndk:android-ndk-r16b 

第一步:下载ffmpeg(下载地址:https://ffmpeg.org/download.html)

windows10下编译ffmpeg for android_第1张图片

 第二步:下载mingw(下载地址:https://sourceforge.net/projects/mingw/files/)

windows10下编译ffmpeg for android_第2张图片

下载完成后运行 mingw-get-setup.exe 安装MinGW Installer

windows10下编译ffmpeg for android_第3张图片

 

直接默认,点击continue  开始安装,下图即安装成功的样子:

windows10下编译ffmpeg for android_第4张图片

 

如果mingw-get-setup安装mingw总是出现download failed和unable to continue错误,截图如下:

windows10下编译ffmpeg for android_第5张图片

 

 原因是网络问题导致下载失败,网上有人说连接手机热点可以解决但是我试了N多次都没有效果,我的解决方法是找个梯子连接外网即可成功下载。

安装后桌面上会建立快捷方式,运行。

windows10下编译ffmpeg for android_第6张图片

在此处选择basic setup,把右边的都勾选,然后点击左上角的installation下拉菜单下的apply change进行下载安装。

windows10下编译ffmpeg for android_第7张图片

如果安装出现错误

install: bison-2.4.2-1-msys-1.0.13-doc.tar.lzma
mingw-get-gui: *** ERROR *** required package file is not available
mingw-get-gui: *** ERROR *** cannot install bison-2.4.2-1-msys-1.0.13-doc.tar.lzma
mingw-get-gui: *** ERROR *** due to previous download failure
 

windows10下编译ffmpeg for android_第8张图片

遇到这样的问题很大概率是被墙了
使用梯子即可
再次运行mingw-get即可

安装完成后会在安装目录下出现这些文件:
 

windows10下编译ffmpeg for android_第9张图片

然后配置环境变量:

windows10下编译ffmpeg for android_第10张图片

之后在安装目录找到msys.bat并打开,后面会用到。

windows10下编译ffmpeg for android_第11张图片

 

找到ffmpeg目录下的configure文件,将如下代码:

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)'

替换为:

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

新建一个build_android.sh,里面的代码如下:

#!/bin/bash

ADDI_CFLAGS="-marm"
API=19
PLATFORM=arm-linux-androideabi
CPU=armv7-a
#自己本地的ndk路径。
NDK=C:/jiangjie/Android/android-ndk-r16b
SYSROOT=$NDK/platforms/android-$API/arch-arm/
ISYSROOT=$NDK/sysroot
ASM=$ISYSROOT/usr/include/$PLATFORM
TOOLCHAIN=$NDK/toolchains/$PLATFORM-4.9/prebuilt/windows-x86_64
#自己指定一个输出目录,用来放生成的文件的。
OUTPUT=C:/jiangjie/Android/ffmpeg-3.3.6/output
function build
{
./configure \
--prefix=$OUTPUT \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--target-os=android \
--arch=arm \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-I$ASM -isysroot $ISYSROOT -Os -fpic -marm" \
--extra-ldflags="-marm" \
$ADDITIONAL_CONFIGURE_FLAG
  make clean
  make 
  make install
}
build

 

#################################################################################################

前期的准备工作就差不多完工了,现在就是开始编译了:

进入你安装的MinGW目录中,找到刚刚安装的msys中

给build.sh权限,输入 chmod +x build.sh

执行./build.sh

又出现错误:yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild错误

windows10下编译ffmpeg for android_第12张图片

 

安装ffmpeg过程中,执行./configure时,报yasm/nasm not found or too old. Use --disable-yasm for a crippledbuild错误,分析、解决如下:

分析:yasm是汇编编译器,ffmpeg为了提高效率使用了汇编指令,如MMX和SSE等。所以系统中未安装yasm时,就会报上面错误。

解决:安装yasm编译器。安装方法如下:

在http://www.tortall.net/projects/yasm/releases下面找到适合自己平台的yasm版本。然后进行安装。举例如下:

1)下载:wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz

2)解压:tar zxvf yasm-1.3.0.tar.gz

3)切换路径: cd yasm-1.3.0

4)执行配置: ./configure

5)编译:make

6)安装:make install

 

windows10下编译ffmpeg for android_第13张图片

然后返回ffmpag再次执行./configure

 

最后进入ffmpeg所在解压的目录:

 执行./build.sh

 

windows10下编译ffmpeg for android_第14张图片

注:如果提示.../arm-linux-androideabi-pkg-config not found, library detection may fail.警告,忽视即可,编译时目前没有发现有什么影响。

 

 

 

你可能感兴趣的:(Qt)