Подпрограммы в книге «Практика разработки FFmpeg: от нулевых основ к короткому онлайн-видео» в основном проверяют локальные аудио- и видеофайлы. Конечно, из соображений безопасности многие онлайн-видео используют https-адреса. Если FFmpeg хочет получить доступ к https-видео, он должен интегрировать стороннюю библиотеку openssl, но openssl по умолчанию отключен при компиляции FFmpeg. Чтобы приложение могло воспроизводить онлайн-видео по протоколу https, его необходимо скомпилировать, установить и включить с помощью openssl.
При кросс-компиляции библиотеки so Android на сервере Linux подробные шаги по интеграции openssl в FFmpeg следующие:
Адрес хостинга исходного кода openssl — https://github.com/openssl/openssl, а страница загрузки каждой версии openssl — https://github.com/openssl/openssl/releases/. Например, openssl-3.2.0 выйдет в ноябре 2023 года. Эту версию пакета исходного кода 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.sh
Первым шагом является установка openssl в /usr/local/app_openssl и загрузка пути pkgconfig openssl в переменную среды PKG_CONFIG_PATH. Файл профиля системы Linux находится в .bash_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 PKG
Откройте главу 12/config_ffmpeg_full.sh в исходном коде «Разработка FFmpeg: от нулевых основ до короткого видео онлайн», сохраните файл как 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 install
(1) Скопируйте весь кросс-скомпилированный каталог включения FFmpeg (расположенный в /usr/local/app_ffmpeg/include) в каталог src/main/cpp проекта приложения. (2) Создайте каталог jniLibs в каталоге src\main, создайте подкаталог Arm64-v8a в каталоге jniLibs и скопируйте все 8 кросс-скомпилированных файлов so FFmpeg (расположенных в /usr/local/app_ffmpeg/lib) в Arm64- каталог v8a. (3) В каталог Arm64-v8a также копируются файлы so нескольких сторонних библиотек, включенных в config_ffmpeg_openssl.sh, включая x264, x265, mp3lame, freetype и т. д. (4) Откройте код cpp проекта приложения, измените адрес онлайн-видео, которое будет воспроизводиться, на ссылку https, перекомпилируйте и установите приложение, и видео https можно будет воспроизводить в обычном режиме.