当前位置:首页 » 《关注互联网》 » 正文

基于Android平台的ffmpeg编译_江海细流的专栏

29 人参与  2021年08月24日 13:43  分类 : 《关注互联网》  评论

点击全文阅读


    前面介绍了Android jni 相关知识,但jni最终还是要调用的第三方的C/C++库,这里我们以ffmpeg为例,介绍第三方C/C++如何编译成android 版本。

一、基本原理

关于Android平台C/C++代码编译的方法:

  1. 自己开发的C/C++代码,直接在android studio开发和编译,与jni代码操作方法一致,jni本质就是C/C++代码,只不过调用关于jni的特殊函数,遵守JNI的某些规范而已。
  2. 第三代码。对应第三方代码,直接拷贝到 android studio 开发不太现实,因为这些第三方代码可能非常庞大,而且依赖很多其他库,其他库又依赖其他库,最通用的解决的方案是利用Android NDK的工具链进行交叉编译。

交叉编译:在宿主机上编译,在目标机上执行。从事嵌入式系统或者单片机朋友再熟悉不过了。所有的嵌入系统都是在PC机上编译(宿主机),在单板上执行(目标机)。而Android系统的手机,平板,电视等本身就是一个带Linux内核的嵌入系统。所以我们在Linux PC机上利用Android NDK的工具链编译C/C++代码生成一个so供jni调用就显得更通用更自然的做法。

二、认识Android的交叉工具链

                                                                     交叉工具链 

这个是一个经典的交叉工具链,bin目录是二进制工具。包含常用Android支持的各硬件平台的编译器,链接器,readelf,nm,skip,ar,objectdump,ldd等。

                                                                二进制工具

值得关注的Android NDK里面编译器,不再是传统的gcc,g++编译器,考虑编译效率,ndk已经将编译器切换到clang,clang++编译器。sysroot是一个交叉工具链的典型根文件系统,它包括编译所引用的头文件,库(C/C++库,其他函数库等)。

                                            工具链中的头文件与库文件

由此可见,ndk编译Android的 so库本质就是使用交叉工具链交叉编译,与常规的嵌入系统开发流程没有啥区别。

三、编译基于andorid的ffmepg的库

准备unix环境(Linux系统,mac系统,cygwin等),本文编译环境为linux 系统。

1、下载Linux版本的Android NDK

下载地址:https://developer.android.google.cn/ndk/downloads

2、下载ffmpeg

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

3、编写编译脚本

编译脚本的基本思路:配置交叉编译相关的变量,在configure生成makefile时指定交叉编译工具链来编译,而不是默认采用宿主机的自带的gcc来编译(如不是自动configure生成的makefile,可以直接修改makefile的工具链来编译)。我们可以将配置和编译写成一个ffmpeg_build.sh脚本。

4、进入ffmpeg根目录采用ffmpeg_build.sh编译即可

  chmod +x ffmpeg_build.sh  //修改可执行权限

  ./ ffmpeg_build.sh     //执行编译

 5、生成的android 版本的so库如下:

                                        交叉编译生成的ffmpeg库

 

四、总结

以上就是关于交叉编译ffmpeg生成Android C/C++的so库的完整步骤,更多更新信息请关注


点击全文阅读


本文链接:http://zhangshiyu.com/post/26096.html

编译  交叉  工具  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 京圈佛子破戒后,我改嫁京圈纨绔(沈墨渊,白晶晶)
  • 前世被闺蜜害死,重生后我让她从太子妃变疯女苏婉儿,清歌完本_前世被闺蜜害死,重生后我让她从太子妃变疯女(苏婉儿,清歌)
  • 全书浏览七零军嫂太彪悍,带三宝上军区离婚(沈清落,陈桂花,陆有为)_七零军嫂太彪悍,带三宝上军区离婚(沈清落,陈桂花,陆有为)全书结局
  • 今天也没变成昨天(周扬陈默)全书免费_(周扬陈默)今天也没变成昨天后续(周扬陈默)
  • 重生后,秦总非要父以子贵(许沐晴,秦越泽)全书浏览_重生后,秦总非要父以子贵全书浏览
  • 他嫌弃我喝两块钱豆浆上不了台面,我结婚后他又哭又闹全书万照,白青青在线
  • 昭然若梦前尘烬列表_昭然若梦前尘烬(温昭然方池雲)
  • 导师借我股票账号,我倒欠五十万(孟潇潇,宁薇)_导师借我股票账号,我倒欠五十万孟潇潇,宁薇
  • 拒绝把外卖券给舍友,竹马送我到迪拜捡垃圾(周钰泽,蒋清清,思源)全书浏览_拒绝把外卖券给舍友,竹马送我到迪拜捡垃圾全书浏览
  • 我的人生,你已出局(程森凌古楚文)_我的人生,你已出局程森凌古楚文
  • 穿书成病娇女配,睁眼就签下离婚协议书(朱楼)_穿书成病娇女配,睁眼就签下离婚协议书
  • 老婆逼我给白月光捐肾,我死后她悔疯了(宋逸晨沈墨白)全书浏览_老婆逼我给白月光捐肾,我死后她悔疯了全书浏览

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1