原文地址 这里更新到最新版本
环境要求:
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。