FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
《FFmpeg开发实战:从零基础到短视频上线》一书的例程重要测试本地的音视频文件,当然为了安全起见,许多网络视频都接纳了https地点。FFmpeg若要访问https视频,就必须集成第三方的openssl库,但编译FFmpeg时却默认关闭了openssl。为了让App能够播放接纳https的在线视频,必要编译安装并启用openssl。在Linux服务器交叉编译Android的so库之时,给FFmpeg集成openssl的具体步骤说明如下:1、交叉编译openssl
openssl的源码托管地点为https://github.com/openssl/openssl,各版本openssl的下载页面是https://github.com/openssl/openssl/releases/。比如2023年11月发布的openssl-3.2.0,可从下面链接下载该版本的openssl源码包:
https://github.com/openssl/openssl/releases/download/openssl-3.2.0/openssl-3.2.0.tar.gz把openssl的源码包上传到Linux服务器,解压并进入源码目次,也就是执行下列下令。
tar zxvf openssl-3.2.0.tar.gz
cd openssl-3.2.0确认ndk已经放到了服务器上,接着创建编译脚本build_openssl.sh,填入下面的脚本内容(注意android-arm64表示编译64位的so库,no-shared表示只编译静态库不编译动态库):
#!/bin/bash
NDK_HOME=/usr/local/src/android-ndk-r21e
SYSTEM=linux-x86_64
HOST=aarch64-linux-android
API=24
export PATH=$NDK_HOME/toolchains/llvm/prebuilt/$SYSTEM/bin:$NDK_HOME/toolchains/$HOST-4.9/prebuilt/$SYSTEM/bin:$PATH
export ANDROID_NDK_ROOT=$NDK_HOME
echo "config for openssl"
./Configure android-arm64 no-shared --prefix=/usr/local/app_openssl -D__ANDROID_API__=$API
echo "config for openssl completed"
make -j4
make install保存并退出build_openssl.sh,执行以下下令编译和安装openssl。
chmod +x build_openssl.sh
./build_openssl.sh2、加载openssl的环境变量
第一步把openssl安装在/usr/local/app_openssl,还要把openssl的pkgconfig路径加载到环境变量PKG_CONFIG_PATH中。
Linux系统的profile文件位于用户初始目次的.bash_profile。执行以下下令编辑当前用户的profile文件:
cd
vi .bash_profile往.bash_profile的文件末端添加下面一行:
export PKG_CONFIG_PATH=/usr/local/app_openssl/lib/pkgconfig:$PKG_CONFIG_PATH保存并退出.bash_profile之后,执行以下下令加载环境变量:
source .bash_profile然后执行下面的环境变量查看下令,确保openssl的环境变量已经成功加载。
env | grep PKG3、重新编译FFmpeg启用openssl
打开《FFmpeg开发实战:从零基础到短视频上线》随书源码的chapter12/config_ffmpeg_full.sh,将该文件另存为config_ffmpeg_openssl.sh,并在文件内部这行
--enable-libx264 \的下面增加如下一行配置
--enable-openssl \接着把config_ffmpeg_openssl.sh上传到服务器的FFmpeg源码目次,执行下面下令赋予可执行权限。
chmod +x config_ffmpeg_openssl.sh然后运行下列下令配置、编译和安装FFmpeg
./config_ffmpeg_openssl.sh
make clean
make -j4
make install4、把so文件导入App工程
(1)把FFmpeg交叉编译好的include目次(位于/usr/local/app_ffmpeg/include)整个复制到App工程的src/main/cpp目次下。
(2)在src\main目次下创建jniLibs目次,并在jniLibs下面创建子目次arm64-v8a,把FFmpeg交叉编译好的8个so文件(位于/usr/local/app_ffmpeg/lib)全部复制到arm64-v8a目次下。
(3)config_ffmpeg_openssl.sh内里启用的几个第三方库的so文件也一块复制到arm64-v8a目次下,包括x264、x265、mp3lame、freetype等。
(4)打开App工程的cpp代码,把待播放的在线视频地点改为https链接,重新编译安装App,即可正常播放https视频了。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]