• mediasoup编译之ios端


    一、环境准备

    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

  • 相关阅读:
    Janus实际生产案例
    【Mysql】主从不一致恢复(详细简单操作)
    AI:70-基于机器学习的水质检预测
    PostgreSQL
    leetcode34.排序数组中查找元素第一个和最后一个位置两种解题方法(超详细)
    ARCGIS 横向图例是怎么做的?
    2022下半年软件评测师真题评析
    全波形反演的深度学习方法: 第二章 正演 (草稿)
    webpack5内部是如何处理模块化的?
    Beats Studio Buds 连接 Windows 11 声音输出不显示设备
  • 原文地址:https://blog.csdn.net/cffishappy/article/details/127669309