加入收藏 | 设为首页 | 会员中心 | 我要投稿 莱芜站长网 (https://www.0634zz.com/)- 云连接、建站、智能边缘云、设备管理、大数据!
当前位置: 首页 > 综合聚焦 > Ubuntu > 正文

Ubuntu编译Android使用的FFmpeg

发布时间:2020-09-21 20:49:59 所属栏目:Ubuntu 来源:互联网
导读:本文介绍在Ubuntu平台编译FFmpeg库,用于Android使用。前提需要配置好NDK的环境。可以参考之前的文章Android NDK环境搭建。 下载FFmpeg 在官网下载FFmpeg源码,https://ffmpeg.org/download.html 本文基于FFmpeg2.8进行编译。 将下载的文件解压,得到ffmpeg目

本文介绍在Ubuntu平台编译FFmpeg库,用于Android使用。前提需要配置好NDK的环境。可以参考之前的文章Android NDK环境搭建。

下载FFmpeg

在官网下载FFmpeg源码,https://ffmpeg.org/download.html

本文基于FFmpeg2.8进行编译。

将下载的文件解压,得到ffmpeg目录。

修改configure文件

由于FFmpeg默认生成的库文件格式为libavcodec.so.xx.xx.x。其中的xx就是主副版本号,这种格式在Ubuntu下使用是没有问题的,但是在Android下开发使用,并不把其作为有效的库文件。所以需要修改其他生成的文件名的格式。

通过修改configure文件要实现,打开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)'

编译生成类库

基本的编译过程是configure,make,make install。其中configure的配置文件根据需要进行配置,如果是第一次使用,可以按如下进行配置。如果你不是第一次使用,相信你对于配置的参数应该已经知道自己需要哪些功能。

在与ffmpeg相同级别建立,编译脚本文件build.sh

#!/bin/bash

NDK=/home/mn/bin/android-ndk-r15b
SYSROOT=$NDK/platforms/android-16/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
PREFIX=../output
ADDI_CFLAGS="-marm"


# --disable-symver - disable symbolic versioning
function build_one
{
    ./configure 
        --prefix=$PREFIX          --enable-shared          --enable-small          --disable-static          --disable-doc          --disable-ffmpeg          --disable-ffplay          --disable-ffprobe          --disable-ffserver          --disable-symver          --target-os=linux          --arch=arm          --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 -j4
    make install
}

cd ffmpeg
build_one

在脚本的开始处定义了一些变量,其他NDK需要根据自己的环境进行配置,配置为NDK的根目录。

PREFIX为编译的输出的目录。其他参数不需要修改。

执行如下命令进行编译:

$ chmod u+x build.sh
$ ./build.sh

等待编译结束。在output/lib/的目录下生成如下文件:

libavcodec-57.so
libavcodec.so
libavdevice-57.so
libavdevice.so
libavfilter-6.so
libavfilter.so
libavformat-57.so
libavformat.so
libavutil-55.so
libavutil.so
libswresample-2.so
libswresample.so
libswscale-4.so
libswscale.so
pkgconfig

错误处理

如果在编译的过程中出现了错误,查看ffmpeg/config.log对配置的日志,及make的错误输出。欢迎留言相互交流。

By 枫竹梦

(编辑:莱芜站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读