文章目录

  • 前言
  • webrtc下载编译
    • 正常编译webrtc
    • 获取对应的版本
      • 获取对应的版本,下面以获取m98版本为例
    • webrtc对应的版本的地址,需要翻墙才能查看
    • 编译记录
    • peerconnection_client时序图
      • 一对一通话时序图
  • 代码下载
  • 参考博客

前言

推荐一个零声学院免费教程,个人觉得老师讲得不错,
分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容,点击立即学习:

webrtc下载编译

正常编译webrtc

# 运行 cmd 窗口
# 设置代理
set http_proxy=http://127.0.0.1:1080
set https_proxy=http://127.0.0.1:1080
# 下载depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
# https://storage.googleapis.com/chrome-infra/depot_tools.zip 直接下载
# 将depot_tools 路径加入path中
set DEPOT_TOOLS_UPDATE=0 # 不更新depot_tools
set DEPOT_TOOLS_WIN_TOOLCHAIN=0 #编译时使用本机VS工具链
set GYP_MSVS_VERSION = 2022 #指定VS版本
set GYP_MSVS_OVERRIDE_PATH = "C:\Program Files\Microsoft Visual Studio\2022\Enterprise" #vs安装路径,替换成自己的
set GYP_GENERATORS=msvs-ninja,ninja #使用ninja编译
md webrtc-checkout
#进入到创建的目录中
cd webrtc-checkout
#获取代码,这一步会花很长的时间,一般会失败
fetch --nohooks webrtc
# 当过程中断时(包括上一步的失败),我们可以使用该命令恢复并继续
gclient sync
# 遇到代理错误,需要新建一个文件.boto
# 新建文件.boto内容为
[Boto]
proxy=127.0.0.1
proxy_port=1080
# 存放至webrtc-checkout目录
# 并配置环境变量:NO_AUTH_BOTO_CONFIG=.\.boto
set NO_AUTH_BOTO_CONFIG=.\.boto
# 生成解决方案
gn gen out\Default
# 编译生成
ninja -C out\Default

获取对应的版本

webrtc 弄人下载最新版本,这里,可能需要获取一个稳定版本(正常情况下,会找一个固定版本学习,使用) 需要先更新到最新的版本,然后再切换到对应的版本上 版本对应的地址:https://chromiumdash.appspot.com/branches,需要代理

获取对应的版本,下面以获取m98版本为例

git checkout -b m98 refs/remotes/branch-heads/4758
gclient sync

目前,我已将对应的depot_tools 的工具上传到CSDN上下载地址
这个只要直接下载,windows下下载下来,加入环境变量就可以直接使用了。
如果不能翻墙的朋友,可以直接通过git下载 https://gitee.com/BigPig0/webrtc_vs2022.git,结合我上传的depot_tools ,就能正常的在windows下编译使用webrtc了。
此链接下载下来,jsoncpp source 部分缺失,补上就可以了。
我自己下载的m98版本的webrtc源码

下面是编译

webrtc对应的版本的地址,需要翻墙才能查看

https://chromiumdash.appspot.com/branches

编译记录

编译webrtc会遇到很多的问题,需要不断的去查找和解决各个问题。目前,工作和学习上需要使用到webrtc。所以就下载了一遍wenrtc。并记录
下来了。这样有助于学习和了解webrtc。下一章节,开始来学习一下webrtc源码。获取一个固定版本的好处是,虽然webrtc代码在不断的迭代,
但是基本功能和结构变化不大。这样的话,可以很好的深入的去学习webrtc源码。

peerconnection_client时序图

一对一通话时序图

#mermaid-svg-1HJAXOjI4ELrJIft {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-1HJAXOjI4ELrJIft .error-icon{fill:#552222;}#mermaid-svg-1HJAXOjI4ELrJIft .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-1HJAXOjI4ELrJIft .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-1HJAXOjI4ELrJIft .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-1HJAXOjI4ELrJIft .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-1HJAXOjI4ELrJIft .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-1HJAXOjI4ELrJIft .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-1HJAXOjI4ELrJIft .marker{fill:#333333;stroke:#333333;}#mermaid-svg-1HJAXOjI4ELrJIft .marker.cross{stroke:#333333;}#mermaid-svg-1HJAXOjI4ELrJIft svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-1HJAXOjI4ELrJIft .actor{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-1HJAXOjI4ELrJIft text.actor>tspan{fill:black;stroke:none;}#mermaid-svg-1HJAXOjI4ELrJIft .actor-line{stroke:grey;}#mermaid-svg-1HJAXOjI4ELrJIft .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333;}#mermaid-svg-1HJAXOjI4ELrJIft .messageLine1{stroke-width:1.5;stroke-dasharray:2,2;stroke:#333;}#mermaid-svg-1HJAXOjI4ELrJIft #arrowhead path{fill:#333;stroke:#333;}#mermaid-svg-1HJAXOjI4ELrJIft .sequenceNumber{fill:white;}#mermaid-svg-1HJAXOjI4ELrJIft #sequencenumber{fill:#333;}#mermaid-svg-1HJAXOjI4ELrJIft #crosshead path{fill:#333;stroke:#333;}#mermaid-svg-1HJAXOjI4ELrJIft .messageText{fill:#333;stroke:#333;}#mermaid-svg-1HJAXOjI4ELrJIft .labelBox{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-1HJAXOjI4ELrJIft .labelText,#mermaid-svg-1HJAXOjI4ELrJIft .labelText>tspan{fill:black;stroke:none;}#mermaid-svg-1HJAXOjI4ELrJIft .loopText,#mermaid-svg-1HJAXOjI4ELrJIft .loopText>tspan{fill:black;stroke:none;}#mermaid-svg-1HJAXOjI4ELrJIft .loopLine{stroke-width:2px;stroke-dasharray:2,2;stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);}#mermaid-svg-1HJAXOjI4ELrJIft .note{stroke:#aaaa33;fill:#fff5ad;}#mermaid-svg-1HJAXOjI4ELrJIft .noteText,#mermaid-svg-1HJAXOjI4ELrJIft .noteText>tspan{fill:black;stroke:none;}#mermaid-svg-1HJAXOjI4ELrJIft .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1HJAXOjI4ELrJIft .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1HJAXOjI4ELrJIft .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1HJAXOjI4ELrJIft .actorPopupMenu{position:absolute;}#mermaid-svg-1HJAXOjI4ELrJIft .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-1HJAXOjI4ELrJIft .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-1HJAXOjI4ELrJIft .actor-man circle,#mermaid-svg-1HJAXOjI4ELrJIft line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-1HJAXOjI4ELrJIft :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}PeerAsignal_serverstun/turn serverPeerBconnectconnectCreate PeerConnectionAdd StreamsCreate OffersetLocalDescriptionbind requestsend SDP Offerrelay SDP OfferCreate PeerConnectionAdd StreamssetRemoteDescriptionCreate AnswersetLocalDescriptionsend SDP Answerrelay SDP Answerbind requestsetRemoteDescriptionask my ip addressonIceCandidatesend candidaterelay candidateadd ice candidateask my ip addressonIceCandidatesend candidaterelay candidateP2P ChannelonAddStreamsloop[P2P]PeerAsignal_serverstun/turn serverPeerB

代码下载

https://cloud.189.cn/web/share?code=EvMbmanMb26n(访问码:bo7p)

参考博客

WebRTC笔记之二:编译(2021年3月更新)
在Ubuntu上为Android构建WebRTC时出错
WebRTC源码下载和编译
Windows平台WebRTC编译(持续更新)

webrtc学习--webrtc源码获取相关推荐

  1. Firefox OS 学习——B2G 源码获取和build code

    参考文章:Building and installing Firefox OS 这篇文件简单说下,自己实践获取B2G的源码并编译. 硬件要求: 1. An installed 64 bit GNU/L ...

  2. WebRTC PeerConnection Client源码分析3-Conductor

    本文分析的webrtc的版本是:m84 平台:win10 WebRTC PeerConnection Client源码分析1-main window WebRTC PeerConnection Cli ...

  3. webrtc的Probe源码分析(M92)

    webrtc的Probe源码分析(M92) webrtc中的主动带宽探测是gcc拥塞控制中极为重要的一环,其在快速有效的确定网络带宽这一关键环节中起到了十分重要的作用.这里就结合新版webrtc源码( ...

  4. 鸿蒙Hi3861学习十九-DevEco Device Tool源码获取、编译、下载

    一.简介 在上一篇文章中,已经讲述了如何在Windows通过Remote SSH远程连接Linux下的DevEco Device Tool.这篇文章,来说一下关于源码的获取.编译与下载.建议先按照上一 ...

  5. vue filter对象_学习vue源码(3) 手写Vue.directive、Vue.filter、Vue.component方法

    一.Vue.directive Vue.directive(id,[definition]); 1)参数 { string } id{ Function | Object } [ definition ...

  6. 我该如何学习spring源码以及解析bean定义的注册

    如何学习spring源码 前言 本文属于spring源码解析的系列文章之一,文章主要是介绍如何学习spring的源码,希望能够最大限度的帮助到有需要的人.文章总体难度不大,但比较繁重,学习时一定要耐住 ...

  7. TLD(Tracking-Learning-Detection)学习与源码理解之(六)

    TLD(Tracking-Learning-Detection)学习与源码理解之(六) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  8. TLD(Tracking-Learning-Detection)学习与源码理解之(五)

    TLD(Tracking-Learning-Detection)学习与源码理解之(五)   zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和 ...

  9. TLD(Tracking-Learning-Detection)学习与源码理解之(四)

    TLD(Tracking-Learning-Detection)学习与源码理解之(四) zouxy09@qq.com http://blog.csdn.net/zouxy09 下面是自己在看论文和这些 ...

  10. 学习 vuex 源码整体架构,打造属于自己的状态管理库

    前言 这是学习源码整体架构第五篇.整体架构这词语好像有点大,姑且就算是源码整体结构吧,主要就是学习是代码整体结构,不深究其他不是主线的具体函数的实现.本篇文章学习的是实际仓库的代码. 其余四篇分别是: ...

最新文章

  1. 30 岁码农人生:人生至暗时,你依然能窥见光明
  2. 深入浅出Android系统启动流程
  3. verilog 给数组集体赋值_Verilog中如何对数组赋值(存储器memory详解)
  4. java 时间回退_java.time DateTimeFormatter使用灵活的回退值进行解析
  5. Visual Studio调试之避免单步跟踪调试模式
  6. Linux考试题(带答案)
  7. 当管理遇上“人情”,你会怎么做?
  8. 2022手机号段大全、归属运营商整理—2022.01.04更新(包含三大运营商)
  9. 计算机内存储器和外存储器相比较,计算机中内存储器和外存储器有什么区别
  10. OO系统分析员之路--用例分析系列(1)--什么是用例
  11. Vue 实现PC端和移动端的自适应
  12. php服务器监控系统,91 Monitor
  13. 慢慢欣赏linux CPU占用率和负载
  14. c语言不能输出字符A的语句的是,以下不能输出字符a的语句是( )。
  15. Ubuntu16.04 Flash Player播放插件安装
  16. Word2Vec词向量模型代码
  17. jQuery选择器(二)
  18. 警惕!国内已有5000余个网站中招!关于一种大规模的暗链劫持流量的风险提示
  19. python使用背景图片做词云图
  20. c语言实现的小学生心算抢答系统

热门文章

  1. 计算机二级字处理在哪保存,计算机二级ms-office字处理操作步骤(37页)-原创力文档...
  2. 类型“System.Data.OracleClient.OracleParameter”在未被引用的程序集中定义。必须添加对程序集“System.Data.OracleClient, Version=
  3. 洗脸水里加点盐痘痘去无踪
  4. (一)jsp是什么?有什么作用?
  5. 【网络】RDMA技术简述
  6. web安全防御之RASP技术
  7. RPG游戏之组队测试
  8. export default 和 export 的使用方式
  9. Windows 10 虚拟机很卡
  10. 2021护理正高考试成绩查询,查分啦:2021年护士执业资格考试成绩正式公布