前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FFmpeg开发笔记(八)Linux交叉编译Android的FFmpeg库

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

原创
作者头像
aqi00
发布2024-03-17 12:02:06
1170
发布2024-03-17 12:02:06
举报
文章被收录于专栏:FFmpeg实战FFmpeg实战

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

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

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

代码语言:javascript
复制
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文件里的下面这行

代码语言:javascript
复制
SYSTEM=windows-x86_64

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

代码语言:javascript
复制
SYSTEM=linux-x86_64

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

代码语言:javascript
复制
chmod +x config_*.sh

3、编译x264库的源码

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

代码语言:javascript
复制
    echo "SONAME=libx264.so.$API" >> config.mak

改为下面这行:

代码语言:javascript
复制
    echo "SONAME=libx264.so" >> config.mak

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

代码语言:javascript
复制
./config_x264.sh
make -j4
make install

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

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

代码语言:javascript
复制
./config_xxx.sh
make -j4
make install

5、配置环境变量PKG_CONFIG_PATH

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

代码语言:javascript
复制
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之后,执行以下命令加载环境变量:

代码语言:javascript
复制
source .bash_profile

6、编译FFmpeg库的源码

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

代码语言:javascript
复制
./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库”。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、下载Linux版本的android-ndk-r21e
  • 2、上传FFmpeg相关库的源码
  • 3、编译x264库的源码
  • 4、编译其他第三方库的源码
  • 5、配置环境变量PKG_CONFIG_PATH
  • 6、编译FFmpeg库的源码
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档