FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库

本文涉及的产品
视觉智能开放平台,视频通用资源包5000点
视觉智能开放平台,图像通用资源包5000点
视觉智能开放平台,分割抠图1万点
简介: 在Linux环境下交叉编译Android所需的FFmpeg so库,首先下载`android-ndk-r21e`,然后解压。接着,上传FFmpeg及相关库(如x264、freetype、lame)源码,修改相关sh文件,将`SYSTEM=windows-x86_64`改为`SYSTEM=linux-x86_64`并删除回车符。对x264的configure文件进行修改,然后编译x264。同样编译其他第三方库。设置环境变量`PKG_CONFIG_PATH`,最后在FFmpeg源码目录执行配置、编译和安装命令,生成的so文件复制到App工程指定目录。

​《FFmpeg开发实战:从零基础到短视频上线》一书的“12.1.2 交叉编译Android需要的so库”介绍了如何在Windows环境交叉编译Android所需FFmpeg的so库,接下来介绍如何在Linux环境交叉编译Android所需FFmpeg的so库。

1、下载Linux版本的android-ndk-r21e

登录Linux服务器(比如华为云的欧拉系统),依次执行下面的命令。

cd /usr/local/src
curl -O https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
unzip android-ndk-r21e-linux-x86_64.zip

2、上传FFmpeg相关库的源码

重新解压FFmpeg相关库的源码,包括FFmpeg、x264、freetype、lame等,并修改FFmpeg相关库的sh文件(包括config_x264.sh、config_freetype.sh、config_lame.sh、config_ffmpeg_full.sh,这几个sh文件见《FFmpeg开发实战:从零基础到短视频上线》随书源码的chapter12目录)。修改内容如下:
(1)把几个sh文件里的下面这行

SYSTEM=windows-x86_64

改为下面这行,也就是把“windows”替换为“linux”

SYSTEM=linux-x86_64

(2)去掉几个sh文件里的回车符
使用文本编辑软件UltraEdit可以去掉回车符,去除方式有两种,一种是把“^p”替换为“^n”;另一种是依次选择菜单:文件→转换→DOS转UNIX,因为UNIX文件格式不用回车符。
另外,记得给几个sh文件赋予可执行权限,也就是执行下面命令:

chmod +x config_*.sh

3、编译x264库的源码

在编译x264源码之前,要先修改x264的configure文件。与在Windows环境交叉编译相比,Linux系统在编译x264前只要修改configure,不用改Makefile。
打开x264-master目录下的configure文件,把下面这行(一共有一模一样的两行,两行都要改,别漏了)

    echo "SONAME=libx264.so.$API" >> config.mak

改为下面这行:

    echo "SONAME=libx264.so" >> config.mak

保存并退出configure文件,再依次执行下面的编译命令:

./config_x264.sh
make -j4
make install

4、编译其他第三方库的源码

FFmpeg用到的其他第三方库包括freetype、lame等,这几个库的编译命令如下(注意把xxx换成对应的库名):

./config_xxx.sh
make -j4
make install

5、配置环境变量PKG_CONFIG_PATH

Windows的profile文件位于msys安装目录下面的/etc/profile,而Linux的profile文件位于用户初始目录的.bash_profile。往.bash_profile的文件末尾添加下面两行:

export PKG_CONFIG_PATH=/usr/local/app_x264/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH=/usr/local/app_freetype/lib/pkgconfig:$PKG_CONFIG_PATH

保存并退出.bash_profile之后,执行以下命令加载环境变量:

source .bash_profile

6、编译FFmpeg库的源码

进入FFmpeg的源码目录,依次执行下面的配置、编译和安装命令:

./config_ffmpeg_full.sh
make -j4
make install

编译完成后,即可在/usr/local/app_xxx/bin(xxx为每个库的库名)目录下找到生成的so文件,把这些so文件复制到App工程的src\main\jniLibs\arm64-v8a目录下,此后App工程的配置、编译和运行说明同《FFmpeg开发实战:从零基础到短视频上线》的“12.1.3 App工程调用FFmpeg的so库”。

目录
相关文章
|
Linux 开发工具 Android开发
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
ijkplayer是由Bilibili基于FFmpeg3.4研发并开源的播放器,适用于Android和iOS,支持本地视频及网络流媒体播放。本文详细介绍如何在新版Android Studio中导入并使用ijkplayer库,包括Gradle版本及配置更新、导入编译好的so文件以及添加直播链接播放代码等步骤,帮助开发者顺利进行App调试与开发。更多FFmpeg开发知识可参考《FFmpeg开发实战:从零基础到短视频上线》。
1215 2
FFmpeg开发笔记(六十)使用国产的ijkplayer播放器观看网络视频
|
9月前
|
Ubuntu Linux 编译器
linux下交叉编译licensecc
通过本文的步骤,您可以在Linux环境下成功交叉编译LicenseCC。本文详细介绍了环境准备、工具链安装、源代码下载、CMake配置、编译和验证的全过程。希望这些内容对您的学习和工作有所帮助。
314 62
|
9月前
|
Ubuntu Linux 编译器
linux下交叉编译licensecc
通过本文的步骤,您可以在Linux环境下成功交叉编译LicenseCC。本文详细介绍了环境准备、工具链安装、源代码下载、CMake配置、编译和验证的全过程。希望这些内容对您的学习和工作有所帮助。
150 5
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
408 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
存储 数据库 Android开发
Android:随笔——记录一些Andriod开发中不常用的库
转载请标明地址 QuincySx: http://www.jianshu.com/p/e60d6513dd10 只是分享一些不太常用,但是有可能着急使用而想不起来名字的库,备用 代码模板 Android-Templates-And-Utilities 他存储了一些代码模板 网络状态监听框架 ReactiveNetwork 一个网络状态监听的库 基于rxjava 记录每个线程运行时间的库 BlockCanaryEx 记录线程和每个线程函数执行时间,从而找到影响效率的地方。
1137 0
|
11天前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
107 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
18天前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
188 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
19天前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
332 3
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
2月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
362 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡

热门文章

最新文章

下一篇
开通oss服务