用window 10 自带的linux子系统编译ffmpeg并引入项目(上)

用window 10 自带的linux子系统编译ffmpeg并引入项目(上)

引言

一直想学习ffmpeg在android上的应用,但发现ffmpeg编译需要各种支持软件。今年最新的window10周年纪念版发布居然在window中放入了一个完整的linux的bash。那我是不是就能通过只通过windows就完美的完成ffmpeg的编译到开发呢?抱着试试看的太多我开始了我的探索之旅。

liunx环境安装

  1. 打开控制面板— 程序与功能— 启用或关闭 Windows 功能:
  2. 勾选适用于 Linux 的 Windows 子系统(Beta)并点击确定;image
  3. 安装后需要重启,然后打开命令提示符,执行如下命令即可开启(可直接在管理员模式下输入Bash命令开启):C:\windows\system32\bash.exe
  4. 运行bash.exe文件中的第一次,系统会提示您接受服务条款。 那么该命令将从Windows Store下载Bash on Ubuntu on Windows。
  5. 下载安装完成后会让你输入账号和密码

ffmpeg编译环境搭建

  1. 为了编译ffmepg首先要给你的linux安装上gcc 和 g++其实单独安装很麻烦直接安装build-essential软件包就好了打开bash命令行输入sudo apt-get install build-essential可能部分包会下载失败,多打几次这个命令就好。
  2. 编译android用的so当然需要ndk了,翻墙去下载ndk吧,这里一定要下载linux版的ndk,我开始用windows的ndk试了半天发现不对。ndk地址
  3. 解压ndk
  4. 配置ndk环境变量 打开bash执行$sudo vim ~/.bashrc image
  5. 如上图最后一行是我的ndk的地址。这里修改文件用的vim以前不会vim真是现学的。保存后输入ndk-build如果不提示找不到命令你就成功了

编译ffmpeg

感谢这篇博客给我的启发和帮助 [windows10下编译ffmpeg for android](http://blog.csdn.net/huweijian5/article/details/52840177)

1. 下载ffmpeg地址
2. 配置ffmpeg解压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
NDK=/mnt/c/android/android-ndk-r10
SYSROOT=$NDK/platforms/android-L/arch-arm
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=/mnt/c/android/ffmpeg-3.2.1/so
ADDI_CFLAGS="-marm"
function build_one
{
./configure \
--prefix=$PREFIX \
--enable-shared \
--disable-static \
--disable-doc \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--enable-small \
--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
}
build_one

read -p "Press any key to continue." var 

ndk是你ndk的路径
prefix是你生成so的地址
3.接着打开bash切到.sh的目录下执行build_android.sh经过漫长的等待你就可以在so目录下看到编译好的so了。
中间的过程基本都是靠自己摸索,因为我没查到任何人是通过我这个方式来编译ffmpeg给android用的。中间可能有遗漏的地方。欢迎留言交流

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值