在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原始碼包:
把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中。
Linux系統的profile檔案位於使用者初始目錄的.bash_profile。執行以下命令編輯當前使用者的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目錄(位於/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影片了。