资讯专栏INFORMATION COLUMN

一步一步教你编译FFmpeg(一)

Labradors / 2036人阅读

摘要:目前正在学习,下边将分享一下编译的步骤。编译环境获取源码从官网下载最新版解压开始编译安装以及,并配置环境变量修改配置文件将修改为这样编译出来的命名才符合的使用。

目前正在学习FFmpeg,下边将分享一下编译FFmpeg 的步骤。

1 编译环境

ubuntu 14.04LTS x86_64
android-ndk64-r10-linux-x86_64
ffmpeg 3.1.2

2 获取源码

从FFmpeg官网下载最新版3.1.2

解压ffmpeg-3.1.2.tar.bz2

tar -jxvf  ffmpeg-3.1.2.tar.bz2
3 开始编译

安装android linux NDK以及SDK,并配置环境变量;

修改ffmpeg 配置文件 ffmpeg/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)"
这样编译出来的so命名才符合android的使用。

开始编译 arm 平台库

在ffmpeg 目录下新建 build_android_arm.sh 文件,并复制以下内容到文件

    #!/bin/bash
    export TMPDIR=/home/tianshaokai/android-ffmpeg/tmpdir
    NDK=/home/tianshaokai/Program/Android/Android-NDK/android-ndk-r10e
    SYSROOT=$NDK/platforms/android-16/arch-arm/
    TOOLCHAIN=/home/tianshaokai/Program/Android/Android-NDK/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
    
    CPU=arm
    PREFIX=/home/tianshaokai/android-ffmpeg/ffmpeg_install/arm/
    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
注意 build_android_arm.sh中的 TMPDIR、NDK、SYSROOT、TOOLCHAIN、PREFIX变量为自己的具体情况,具体如下
1.指定临时目录
        export TMPDIR=/home/tianshaokai/android-ffmpeg/tmpdir
    指定一个临时目录,可以是任何路径,但必须保证存在,ffmpeg编译要用;
2.指定NDK路径
        NDK=/home/tianshaokai/Program/Android/Android-NDK/android-ndk-r10e
3.指定使用NDK Platform版本
        SYSROOT=$NDK/platforms/android-16/arch-arm/
    这里指定的ndk platform的路径,一定要选择比你的目标机器使用的版本低的,比如你的手机是android-15版本,那么就选择低于15的

4.指定编译工具链
        TOOLCHAIN=/home/tianshaokai/Program/Android/Android-NDK/android-ndk-r10e/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64
5.指定编译后的安装目录
   PREFIX=/home/tianshaokai/android-ffmpeg/ffmpeg_install/arm/
这个目录是ffmpeg编译后的so的输出目录,会有一个include和lib文件夹生成在这里,这也是我们之后要在android apk中使用的.

执行命令

    chmod 777 build_andrioid_arm.sh
    ./build_andrioid_arm.sh

最后

等待一段时间后,会在 $PREFIX 目录下生成 include和lib两个文件夹,将lib文件夹中的 pkgconfig 目录和so的链接文件删除,只保留so文件,然后将include 和lib两个目录一起copy到你的apk jni下去编译

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/13074.html

相关文章

  • 教你上传自己的 Library 到 JCenter

    摘要:我们在开发过程中一定会用到别人的库,比如公司的这样我们版本更新的时候只需要更改一下版本号就行,而不用去下载包,给开发带来了极大的便利,但如果我们自己想上传供其他开发者使用呢那么此教程会带着你一步一步发布自己的。 我们在Android开发过程中一定会用到别人的库,比如squareup公司的OKHttp: compile com.squareup.okhttp3:okhttp:3.4.1 ...

    lewif 评论0 收藏0
  • 教你如何搭建自己的视频聚合站

    摘要:不过因为各个平台互相挖人的关系,导致关注的一些主播分散到了各个直播平台,来回切换有点麻烦,所以萌生了做一个视频聚合站的想法。后续我们会对这三个部分的功能做逐一展开说明。正则处理要求比较高,但是几乎能应对所有的情况,属于大杀器。 前言 作为一个炉石传说玩家,经常有事没事开着直播网站看看大神们的精彩表演。不过因为各个平台互相挖人的关系,导致关注的一些主播分散到了各个直播平台,来回切换有点麻...

    justjavac 评论0 收藏0
  • 教你用 Vue.js + Vuex 制作专门收藏微信公众号的 app

    摘要:箭头表示数据的流动,负责储存收藏夹的内容,方便下一次打开应用的时候内容不会丢失,服务器负责根据关键字爬取搜狗提供的数据。 只看不赞,或者只收藏不赞的都是耍流氓,放学别走,我找我哥收拾你们。 项目地址:https://github.com/jrainlau/wechat-subscriptor showImg(https://segmentfault.com/img/bVyFVF); s...

    aboutU 评论0 收藏0
  • 教你部署自己的 Laravel 应用程序到服务器

    摘要:包括安装与下载,证书申请与配置,升级到,服务器的简单配置。这对一个应用来说,所造成的后果无疑是毁灭性的。然后在新建一个目录,将刚才的文件放进去,便于统一管理其中红色框框的是要用到文件。 原文地址: here 在部署自己的博客到 LEMP 环境的时候,遇到了一些小挫折,现在把经验分享出来,让大家少走弯路。包括Php7.1安装与下载,SSL证书申请与配置,Mysql升级到5.7,Ngin...

    lolomaco 评论0 收藏0
  • 手把手教你基于WordPress搭建自己的个人博客

    摘要:一步一步教你基于搭建自己的个人博客,作为成熟的框架,美观,方便,插件多,更新频繁,非常适合个人博客与网站的搭建,适合新手,无需太多的代码基础。原文链接手把手教你搭建自己的网站购买购买云服务器为了搭建个人网站,首先肯定需要一个云服务器。 一步一步教你基于WordPress搭建自己的个人博客,WordPress作为成熟的CMS框架,美观,方便,插件多,更新频繁,非常适合个人博客与网站的搭建...

    vpants 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<