如何在Linux服务器交叉编译Android的so库中集成FFmpeg和openssl

《FFmpeg开发实战:从零基础到短视频上线》一书的例程主要测试本地的音视频文件。然而,由于网络视频通常采用https地址以提高安全性,因此若要让FFmpeg访问https视频,就必须集成第三方的openssl库。然而,在编译FFmpeg时,openssl默认是关闭的。为了让App能够播放采用https的在线视频,需要编译安装并启用openssl。

在Linux服务器交叉编译Android的so库时,以下是集成openssl的详细步骤:

1、交叉编译openssl

首先,从https://github.com/openssl/openssl/releases/下载所需版本的openssl源码包,并将其上传到Linux服务器。解压源码包并进入源码目录,执行以下命令。

接着,确认ndk已经放到了服务器上,然后创建编译脚本build_openssl.sh,填入下面的脚本内容(注意android-arm64表示编译64位的so库,no-shared表示只编译静态库不编译动态库):

保存并退出build_openssl.sh,执行以下命令编译和安装openssl。

2、加载openssl的环境变量

将openssl安装在/usr/local/app_openssl目录,并将openssl的pkgconfig路径加载到环境变量PKG_CONFIG_PATH中。编辑当前用户的profile文件,往.bash_profile的文件末尾添加一行:

保存并退出.bash_profile之后,执行以下命令加载环境变量。然后执行环境变量查看命令,确保openssl的环境变量已经成功加载。

3、重新编译FFmpeg启用openssl

打开《FFmpeg开发实战:从零基础到短视频上线》随书源码的chapter12/config_ffmpeg_full.sh,将该文件另存为config_ffmpeg_openssl.sh,并在文件内部增加如下一行配置。接着把config_ffmpeg_openssl.sh上传到服务器的FFmpeg源码目录,执行命令赋予可执行权限。然后运行命令配置、编译和安装FFmpeg。

4、把so文件导入App工程

(1)将FFmpeg交叉编译好的include目录整个复制到App工程的src/main/cpp目录下。

(2)在src\main目录下创建jniLibs目录,并在jniLibs下面创建子目录arm64-v8a,将FFmpeg交叉编译好的8个so文件全部复制到arm64-v8a目录下。

(3)将config_ffmpeg_openssl.sh里面启用的几个第三方库的so文件一块复制到arm64-v8a目录下,包括x264、x265、mp3lame、freetype等。

(4)打开App工程的cpp代码,将待播放的在线视频地址改为https链接,重新编译安装App,即可正常播放https视频了。

未经允许不得转载:大白鲨游戏网 » 如何在Linux服务器交叉编译Android的so库中集成FFmpeg和openssl