ZLMediakit iOS端编译小记

749 阅读2分钟

原文地址 这里更新到最新版本

环境要求:

MacOS、Xcode、CMake

1、下载项目源文件,初始化项目依赖

cd 你新建的目录
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令(wiki原文)
git submodule update --init

2、创建build目录

cd ZLMediaKit
mkdir -p build
cd build

如果需要支持flash播放器,或者要实现rtmps、rtsps、wss、https方式推拉流 需要在编译时导入openssl,如果只需要支持rtmp、rtsp、ws、http请直接跳至第5步

3、编译arm64架构 openssl

3.1下载openssl

点击下载openssl-3.4.1g.tar.gz
要编译其他版本可以在官网选择

3.2下载编译脚本

cd ..
mkdir shel
git clone https://github.com/gitusrs/openssl-ios-build-shell-script.git

3.3优化脚本

打开openssl-ios-build-shell-script目录下的openssl-build.sh文件 找到"OPENSSL_COMPRESSED_FN"设置待解压文件如下:

OPENSSL_COMPRESSED_FN="openssl-3.4.1g.tar.gz"

找到 ARCH_LIST=("armv7" "armv7s" "arm64" "i386" "x86_64")
脚本默认编译以上所有架构,我们只需要arm64,因此只保留arm64

ARCH_LIST=("arm64")

将下载的openssl压缩文件openssl-3.4.1g.tar.gz 和 openssl-build.sh 放在同一个文件夹,本例文件夹为openssl-ios-build-shell-script

3.4执行脚本

./openssl-build.sh

等编译完成,打开openssl-3.4.1g-build文件夹,里面就有arm64架构的openssl
如果执行脚本提示permission问题,就先执行 chmod +x openssl-build.sh 添加权限

4、修改cmake配置文件

进入ZLMediaKit文件夹,打开CMakeLists.txt
将编译好的arm64架构的openssl 头文件路径,以及两个.a文件的路径,导入zlmtoolkit的依赖
找到# 查找 openssl 是否安装
将它下方部分代码

find_package(OpenSSL QUIET)
if(ENABLE_OPENSSL)
  message(STATUS "found library: ${OPENSSL_LIBRARIES}, ENABLE_OPENSSL defined")
  include_directories(${OPENSSL_INCLUDE_DIR})
  update_cached_list(MK_COMPILE_DEFINITIONS ENABLE_OPENSSL)
  update_cached_list(MK_LINK_LIBRARIES ${OPENSSL_LIBRARIES})
  if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND OPENSSL_USE_STATIC_LIBS)
    update_cached_list(MK_LINK_LIBRARIES ${CMAKE_DL_LIBS})
  elseif(CMAKE_SYSTEM_NAME MATCHES "Windows" AND OPENSSL_USE_STATIC_LIBS)
    update_cached_list(MK_LINK_LIBRARIES Crypt32)
  endif()
else()
  set(ENABLE_OPENSSL OFF)
  set(ENABLE_WEBRTC OFF)
  message(WARNING "openssl 未找到, rtmp 将不支持 flash 播放器, https/wss/rtsps/rtmps/webrtc 也将失效")
endif()

替换成

find_package(OpenSSL QUIET)
if(ENABLE_OPENSSL)
  message(STATUS "found library: ${OPENSSL_LIBRARIES}, ENABLE_OPENSSL defined")
    include_directories("/Users/elonmusk/Documents/testZL/ZLMediaKit/openssl-ios-build-shell-script/openssl-3.4.1-build/arm64/include")
list(APPEND LINK_LIB_LIST "/Users/elonmusk/Documents/testZL/ZLMediaKit/openssl-ios-build-shell-script/openssl-3.4.1-build/arm64/lib/libssl.a")
    list(APPEND LINK_LIB_LIST "/Users/elonmusk/Documents/testZL/ZLMediaKit/openssl-ios-build-shell-script/openssl-3.4.1-build/arm64/lib/libcrypto.a")
  if(CMAKE_SYSTEM_NAME MATCHES "Linux" AND OPENSSL_USE_STATIC_LIBS)
    update_cached_list(MK_LINK_LIBRARIES ${CMAKE_DL_LIBS})
  elseif(CMAKE_SYSTEM_NAME MATCHES "Windows" AND OPENSSL_USE_STATIC_LIBS)
    update_cached_list(MK_LINK_LIBRARIES Crypt32)
  endif()
else()
  set(ENABLE_OPENSSL OFF)
  set(ENABLE_WEBRTC OFF)
  message(WARNING "openssl 未找到, rtmp 将不支持 flash 播放器, https/wss/rtsps/rtmps/webrtc 也将失效")
endif()

其中
/Users/elonmusk/Documents/testZL/ZLMediaKit/openssl-ios-build-shell-script/openssl-3.4.1g-build/arm64/include
为头文件目录的绝对路径

/Users/elonmusk/Documents/testZL/ZLMediaKit/openssl-ios-build-shell-script/openssl-3.4.1g-build/arm64/lib/libssl.a /Users/elonmusk/Documents/testZL/ZLMediaKit/openssl-ios-build-shell-script/openssl-3.4.1g-build/arm64/lib/libcrypto.a
为引入的静态库绝对路径

5、进入build目录,开始编译

cmake .. -G Xcode -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake  -DPLATFORM=OS64COMBINED

编译完成后,build目录下就是我们需要的iOS端ZLMediaKit。

编译结果工程

编译结果静态库