FFmpeg编译Android版本_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > FFmpeg编译Android版本

FFmpeg编译Android版本

 2017/9/13 3:14:34  红嘴唇小丑  程序员俱乐部  我要评论(0)
  • 摘要:FFmpeg是很好用的一个音视频库,功能强大,但是用起来并不是很方便。之前一直不想用FFmpeg,因为感觉编译太麻烦,但是到了不得不用的时候了,没办法,参考了网上大神的方法,在这里自己也记录一下方便以后再次查看。一、环境Ubuntu14.04二、NDK环境配置NDK下载链接:https://developer.android.google.cn/ndk/downloads/index.html下载完后解压到任意路径即可,然后Alt+T打开终端执行以下命令
  • 标签:android 编译 版本

FFmpeg是很好用的一个音视频库,功能强大,但是用起来并不是很方便。之前一直不想用FFmpeg,因为感觉编译太麻烦,但是到了不得不用的时候了,没办法,参考了网上大神的方法,在这里自己也记录一下方便以后再次查看。

 

一、环境

        Ubuntu14.04

 

二、NDK环境配置

        NDK下载链接:https://developer.android.google.cn/ndk/downloads/index.html

        下载完后解压到任意路径即可,然后Alt+T打开终端执行以下命令,其中NDK_HOME的值改为你自己的NDK路径

      

export NDK_HOME=/home/y/adm/software/android-ndk-r14b
export PATH=$NDK_HOME:$PATH

 

三、FFmpeg源码下载及配置

        FFmpeg下载地址:http://www.ffmpeg.org/download.html

        一样解压到任意路径,然后找到解压后目录中的/ffmpeg-3.3.4/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)'

 

四、编译

        在FFmpeg根目录新建一个空文档,改名为:build.sh

        在其中写入以下内容:

        其中有些地方需要修改

        1、TMPDIR=为临时目录,自己新建一个,把路径写在这里

        2、NDK=你自己的NDK路径

        3、SYSROOT=编译时的platform版本,根据需要自己选择一个版本

        4、TOOLCHAIN=这里主要还是前边部分的NDK路径需要修改为你自己的

        5、PREFIX=编译后的so等文件的生成路径,自己新建一个文件夹,把路径写在这里

#!/bin/bash
export TMPDIR=/home/y/adm/software/ffmpeg/tmpdir
NDK=/home/y/adm/software/android-ndk-r14b
SYSROOT=$NDK/platforms/android-16/arch-arm/
TOOLCHAIN=/home/y/adm/software/android-ndk-r14b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
CPU=arm
PREFIX=/home/y/adm/software/ffmpeg/result/
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

 

       

修改完后打开终端,切换到FFmpeg根目录,执行:
sh build.sh

 

大概需要几分钟,等待编译结果。
编译完成后,打开PREFIX指定的目录,其中有include和lib两个文件夹,删除lib文件夹中的pkgconfig文件夹和so的链接文件,此时该文件夹中应只剩so库,余下的include和lib就是开发需要的文件了

 

PS:在编译最后出现了这么一句话:

build.sh: 35: build.sh: build_one: not found

 


但是编译结果好像是正常的,反正是sh文件的最后一句了,应该不影响结果

 

发表评论
用户名: 匿名