Android使用FFmpeg(一)--编译ffmpeg

作者: 2012lc | 来源:发表于2017-11-09 11:58 被阅读329次

    关于

    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版本的下载链接地址//下载ndk
    unzip + 压缩文件//解压
    

    配置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.gz
    tar -xzf  ffmpeg-2.6.9.tar.gz
    

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

    #!/bin/bash
    make clean
    export NDK=/home/ndk_build/android-ndk-r14b
    export SYSROOT=$NDK/platforms/android-9/arch-arm/
    export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/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
    

    其中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下载地址

    相关文章

      网友评论

        本文标题:Android使用FFmpeg(一)--编译ffmpeg

        本文链接:https://www.haomeiwen.com/subject/djrpmxtx.html