关于

Android使用FFmpeg(一)--编译ffmpeg
Android使用FFmpeg(二)--Android Studio配置ffmpeg
Android使用FFmpeg(三)--ffmpeg实现视频播放
Android使用FFmpeg(四)--ffmpeg实现音频播放(使用AudioTrack进行播放)
Android使用FFmpeg(五)--ffmpeg实现音频播放(使用openSL ES进行播放)
Android使用FFmpeg(六)--ffmpeg实现音视频同步播放
Android使用FFmpeg(七)--ffmpeg实现暂停、快退快进播放

前言

ffmpeg简介
在现今这个阶段,越来越多的app会涉及到音视频,那么学会使用ffmpeg就很有必要了。在这个系类中将讲解如何把ffmpeg编译成动态库,以及使用ffmpeg实现音视频播放和音视频的采集。

编译环境

Linux/Ubuntu/centos都行
在windows环境下可以安装虚拟机或者购买一个云主机,作者在金山云购买的一个Ubuntu主机。

准备工作

下载配置ndk,下载ffmpeg并解压。

开始

配置ndk

如果你已经配置ok,请跳过这一步。
我们打开自己的虚拟机或者云服务器并且获取到root权限。创建文件夹ndk_build并进入到文件夹中,下载ndk,并解压

mkdir ndk_build//新建文件夹cd ndk_build//进入到文件夹wget +linux版本的下载链接地址//下载ndkunzip + 压缩文件//解压

配置ndk

vim ~/.bashrc//进入环境变量配置export NDKROOT=/home/ndk_build/android-ndk-r14b//配置你的安装路径export PATH=$NDKROOT:$PATH//配置路径:wq!//保存退出source ~/.bashrc//执行环境变量ndk-build//查看是否安装成功,只要不是显示ndk-build not found,则表示安装成功

下载编译ffmpeg

下载ffmpeg并解压


下载ffmpeg并解压.png
wget http://ffmpeg.org/releases/ffmpeg-2.6.9.tar.gztar -xzf  ffmpeg-2.6.9.tar.gz

修改configure文件并新建android_build.sh文件,编辑android_build.sh

#!/bin/bashmake cleanexport NDK=/home/ndk_build/android-ndk-r14bexport SYSROOT=$NDK/platforms/android-9/arch-arm/export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64export CPU=armexport PREFIX=$(pwd)/android/$CPUexport 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_FLAGmake cleanmakemake install

其中NDK是你自己刚刚配置的ndk路径,SYSROOT为platforms中的路径,TOOLCHAIN为toolchains里面中的路径,依次配置好过后保存并退出。
修改configure,如果你不修改的话,编译出来过后的.so文件后面会有一串数字,无法使用,所以得修改他的命名规则。
将该文件中的如下四行:

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

编译.sh文件
···
./android_build.sh
···
当编译成功过后会在文件夹中出现android文件夹,

编译过后的ffmpeg目录.png
在lib文件夹中就有你需要的.so文件了
.so文件.png
这样就差不多编译完成,如果你需要编译一份别人已经编译过的ffmpeg,那么请先执行./confifure --disable-yasm,然后再自己编译。
如果还没编译好但是急需的朋友可以直接下载使用。
.so下载地址

更多相关文章

  1. Ubuntu10.04 32位编译Android(安卓)4.0源码
  2. Android系统在超级终端下必会的命令大全(adb shell命令大全)
  3. 强制 Android(安卓)应用使用某个 Locale语言
  4. Android定时器的使用,
  5. Android常用动画alpha和rotate同时使用
  6. 创建 cocos2d-x+lua for android 步骤
  7. Android(安卓)XML文件解析
  8. Android下使用Socket连接网络电脑
  9. RK3326 Android(安卓)8.1 为自己的APK的服务默认开启无障碍权限,

随机推荐

  1. Android(安卓)启动分析 init进程 init.rc
  2. Android的界面设计工具——DroidDraw
  3. 详解 Android(安卓)的 Activity 组件 -
  4. Android(安卓)数独游戏 记录
  5. android webview调用js完全解析(所有坑都
  6. Android中文API(132) —— GpsSatellite
  7. android定时器(Timer,TimerTask)
  8. Android(安卓)为【apk】文件签名,增加修改
  9. Android中文API(136) —— Bitmap
  10. Android(安卓)ImageView 的scaleType属性