一、环境准备

1.环境配置:

下载Depot_tools代码:

# git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

# export PATH=$PATH:"depot_tools路径" 

2.下载仓库代码

# mkdir webrtc-ios

下载webrtc src代码:

# git clone xxx

下载.gclient文件

# git clone xxx

根据readme.txt,修改.gclient文件中 target_os = ["win"] 为target_os = ["ios"]

二、编译

1.下载工具链(设置vpn代理)

# cd src

# gclient sync

2.webrtc编译

最新版本的webrtc默认编译脚本只能编译framework,没有libwebrtc.a

解决方法:找旧版本的webrtc的src/tools_webrtc/ios/build_ios_libs.py替换

build_ios_libs.py 中根据实际情况选择需要编译的版本 ['arm64', 'arm', 'x64', 'x86'] ,本项目暂时只编译arm64

# python tools_webrtc/ios/build_ios_libs.py --extra-gn-args='is_component_build=false rtc_include_tests=false rtc_enable_protobuf=false use_rtti=true use_custom_libcxx=false'

下载mediasoup-ios

# git clone --recursive git@github.com:ethand91/mediasoup-ios-client.git

将上面生成的libwebrtc.a库拷贝至mediasoup-client-ios/dependencies/webrtc/lib目录下

# cd [XCode project]/mediasoup-client-ios/dependencies

# Build iOS arm64

# /Applications/CMake.app/Contents/bin/cmake . -Bbuild -DLIBWEBRTC_INCLUDE_PATH=/[XCode project]/mediasoup-client-ios/dependencies/webrtc/inc -DLIBWEBRTC_BINARY_PATH=/[XCode project]/mediasoup-client-ios/dependencies/webrtc/lib -DMEDIASOUP_LOG_TRACE=ON -DMEDIASOUP_LOG_DEV=ON -DCMAKE_CXX_FLAGS="-fvisibility=hidden" -DLIBSDPTRANSFORM_BUILD_TESTS=OFF -DIOS_SDK=iphone -DIOS_ARCHS="arm64" -G "Xcode"

打开build目录下工程进行编译后,拷贝libsdptransform.a和libmediasoupclient.a至mediasoup_ios工程中mediasoup-client-ios/dependencies/lib目录下

# cp build/libmediasoupclient/libsdptransform/Debug-iphoneos/libsdptransform.a [XCode project]/mediasoup-client-ios/dependencies/lib

# cp build/libmediasoupclient/Debug-iphoneos/libmediasoupclient.a [XCode project]/mediasoup-client-ios/dependencies/lib

打开Xcode工程, 配置 libmediasoupclient.a libsdptransform.a路径后编译出目标mediasoup_client_ios.framework文件

编译可能遇到的错误:

1. "_OBJC_CLASS_$_RTCMediaStreamTrack", referenced from:

: Objc-class-ref in Producer.o

: Objc-class-ref in Consumer.o

这种问题是由于需要采用动态库方式编译出来的WebRTC.framework

精彩链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。