FFMPEG for android 编译

标签(空格分隔): FFMPEGlinux


最近在研究Android视频播放功能,网上有不少关于视频播放解码的库,可是做为程序员的我,仍是但愿能从源头出发,学习FFMPGE天然是势在必行了。android

网上有关FFMPGE学习的文章有不少,可是对于初学者而言,看的时候彷佛总有一点不知因此然感受,本人也是其中一个。再此,做为一个初学者,咱们须要按着怎样的步骤来学习FFPEG呢?本系列文章就来一块儿记录一下,初学者探索FFMPEG的历程,一点一滴的走向通往大神之路。git

本片文章,个人计划是这样的,程序员

  1. 编译出ffmpeg能够为Android使用动态连接库
  2. Android studio创建jni工程使用动态连接库
  3. 使用动态连接库实现一个简单的视频播放

在作上面的功能的时候,做为初学者,咱们须要有的基础知识是:linux基本功,C语言的基本功,JNI的基本功,Android的基本功,我相信,本篇文章的人,这些基本功,大多数都已经具有了。bash

在完成上面的功能的时候,若是你从未接触过ffmeg,或者对linux不熟悉,也不一样担忧,你彻底能够不求甚解的按着个人步骤一步一步的进行下去,咱们的目的是先把效果实现,而后在对每个功能过程逐步展开,到那时,你就会发现本身的不足,在恶补也不迟,正如咱们学一门语言的时候,总要先搞一个hello world,这案例就是咱们的hello wrold.ide

好了闲话很少扯了,先完成第一个 准备材料:学习

  1. Ubuntu ,我这里用的是16.04
  2. VMware 12.0,若是你的电脑装的就是Ubuntu这个就能够不用了,这里我使用的是虚拟机安装的。
  3. NDK linux 版本,这里我用的是ndk-r13;
  4. 下载ffmpeg ,这里我下载的是最新的版本,你根据本身的选择就好了

有了以上的材料,咱们的工做就是,在Ubuntu上配置NDK,至于如何配置呢?很简单。打开终端输入一下命令ui

sudo gedit /etc/profile

而后在文件中配置:搜索引擎

export NDK_HOME=/home/sivin/programs/android-ndk-r13 //这里替换成你的ndk存放路径
export PATH=$NDK_HOME=:$PATH

下载ffmpeg,这个咱们能够直接在搜索引擎上搜索ffmpeg,进入官网里面提供了不少版本的下载,这里咱们使用的是linuxgit的方式,固然你也能够下载压缩包,而后解压也行,我的喜爱。idea

下面的工做就是编译ffmpeg了,咱们在ffmepg的根目录下,新建build_android.sh 而后在文件中写入:

#!/bin/bash
make clean
export NDK=你的NDK路径
export SYSROOT=$NDK/platforms/android-9/arch-arm/
export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64
export CPU=arm
export PREFIX=$(pwd)/android/$CPU
export ADDI_CFLAGS="-marm"

./configure --target-os=linux \
--prefix=$PREFIX --arch=arm \
--disable-doc \
--enable-shared \
--disable-static \
--disable-yasm \
--disable-symver \
--enable-gpl \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffprobe \
--disable-ffserver \
--disable-doc \
--disable-symver \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--enable-cross-compile \
--sysroot=$SYSROOT \
--extra-cflags="-Os -fpic $ADDI_CFLAGS" \
--extra-ldflags="$ADDI_LDFLAGS" \
$ADDITIONAL_CONFIGURE_FLAG
make clean
make
make install

而后执行这个文件

./build_android.sh

而后静静等待编译就行了, 编译完成以后,咱们会发现,这个目录下多了一个名为android的目录,里面存放的就是咱们想要的动态连接库和头文件。

相关文章
相关标签/搜索