webrtc编译

查看 :xcrun security find-identity -v -p codesigning
使用uuid
gn gen out/ios_64 --args=‘target_os=“ios” target_cpu=“arm64”’ ios_code_signing_identity=“EB4873F5FEE4647354D477CC909371A702BE456F”

  • 安装工具
      需要用到depot_tools工具来下载webrtc源码。

  • 安装 depot_tools
    git 命令获取 depot_tools。

    git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
    
  • 配置坏境变量:

    echo "export PATH=$PWD/depot_tools:$PATH" > $HOME/.bash_profile
    source $HOME/.bash_profile
    
  • 检测配置是否成功:

    $ echo $PATH
    
  • 下载源码

    • 默认master分支
        默认是下载当前最新的源码,即Master分支。

      	# mkdir webrtc
      	# cd webrtc
      	# fetch --nohooks webrtc_android
      	# gclient sync
      
    • 特定分支
        如果要编译特定分支,如M74分支,需指定特定分支进行同步。拉取M74分支使用如下命令:(分支提交记录可参考WebRTC分支提交记录)
      	gclient sync -r cc1b32545db7823b85f5a83a92ed5f85970492c9  --force
      
  • commit id 可通过切换到该分支,查看git log,最上面那条记录即为当前分支最新的提交记录

  • 编译

  • 安装编译依赖
      官网只给出第一条,建议两条命令都执行。

    # ./src/build/install-build-deps.sh
    # ./src/build/install-build-deps-android.sh
    
  • 编译
     编译可指定带或不带AppRTCMobile,带AppRTCMobile生成的Debug目录较小,不带AppRTCMobile生成的文件较多,也更大。

    # source build/android/envsetup.sh
    # gn gen out/Debug --args='target_os="android" target_cpu="arm64"'
    # ninja -C out/Debug AppRTCMobile
    

编译过程中,如果没有出错,即表示编译成功。

  • 编译组合
    a)编译arm debug版本

    gn gen out/Debug_arm --args=‘target_os=“android” target_cpu=“arm”’
    ninja -C out/Debug_arm

b)编译arm64 debug版本

gn gen out/Debug_arm64 --args='target_os="android" target_cpu="arm64"'
ninja -C out/Debug_arm64

c)编译arm release版本

gn gen out/Release_arm --args='target_os="android" target_cpu="arm" is_debug=false'
ninja -C out/Release_arm

d)编译arm64 release版本

gn gen out/Release_arm64 --args='target_os="android" target_cpu="arm64" is_debug=false'
ninja -C out/Release_arm64

此处在生成的out/*名字上做区别,需要自取。

  • 清理
 gn clean out/Debug

参考
  编译Android版的WebRTC
    https://blog.csdn.net/ericbar/article/details/83114015
  WebRTC iOS&OSX 库的编译
    http://www.enkichen.com/2017/05/12/webrtc-ios-build/

api              ;提供了对外的接口,音视频引擎层和 Module 直接的接口。
audio            ;音频流的一部分抽象,属于引擎的一部分逻辑。
base             ;这一部分还没有学习到,属于 Chromium 项目的一部分,貌似 WebRTC 中用的并不多。
build            ;编译脚本。这里需要注意的是,不同平台的代码在下载的时候,获取的工具集是不一样的。
build_overrides  ;编译工具。
buildtools       ;编译工具链。
call             ;主要是媒体流的接口抽象。为媒体引擎和 codec 层提供桥接。这里说的媒体流是 RTP 流。pc 层也抽象了媒体流,那是编码前、或者解码后。
common_audio     ;音频算法实现,比如 fft。
common_video     ;视频算法实现,比如 h264 协议格式。
data             ;测试数据
examples         ;WebRTC 使用的例子。提供了 peerconnection_client、peerconnection_server、stun、turn 的 demo。
logging          ;WebRTC 的 log 库。
media            ;媒体引擎层,包括音频、视频引擎实现。
modules          ;WebRTC 把一些逻辑比较独立的抽象为 Module,利于扩展维护。
out              ;build 输出目录。
p2p              ;主要是实现 candidate 收集,NAT 穿越。
pc               ;实现 jsep 协议。
resources        ;测试数据
rtc_base         ;包括 Socket、线程、锁等 OS 基础功能实现。
rtc_tools        ;网络监测工具、音视频分析工具。很多工具都是脚本实现。
sdk              ;主要是移动端相关实现。
stats            ;WebRTC 统计模块实现。
style-guide      ;编码规范说明
system_wrappers  ;OS 相关功能的封装,比如 cpu、clock 等。
test             ;单元测试代码实现,用 gmock
testing          ;gmock、gtest等源码,属于整个 Chromium 项目。
third_party      ;第三方库依赖。比如 abseil-cpp、ffmpeg 等
tools            ;公共工具集,整个 Chromium 项目依赖的。
tools_webrtc     ;WebRTC 用到的工具集。
video            ;视频 RTP 流的抽象接口,属于视频引擎的一部分。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值