WebRTC源码分析
ice_ly000
这个作者很懒,什么都没留下…
展开
-
WebRTC源码分析-呼叫建立过程之五(创建Offer,CreateOffer,下篇)
介绍MediaSessionDescriptionFactory::CreateOffer过程 && 相关的结构体原创 2020-06-19 08:42:19 · 1385 阅读 · 3 评论 -
WebRTC源码分析——弱指针WeakPtrFactory && WeakPtr
分析完CreateOffer来完成这篇文章原创 2020-06-16 09:08:56 · 847 阅读 · 1 评论 -
WebRTC源码分析——操作链实现OperationsChain
占位,在完成CreateOffer文章之后,来分析原创 2020-06-15 09:48:28 · 1215 阅读 · 2 评论 -
WebRTC源码分析——写时复制缓存CopyOnWriteBuffer
1. 引言先立个flag:写完sdp交换过程,回头来补充2. 什么是写时复制3. CopyOnWriteBuffer实现4. 总结原创 2020-06-12 17:22:28 · 1409 阅读 · 0 评论 -
WebRTC源码分析——Transport层
引言Transport对象分层先贴个图,占位原创 2020-05-17 22:46:49 · 1325 阅读 · 2 评论 -
WebRTC源码分析——DataChannel及其相关类
1. 引言2. DataChannelController3. DataChannelTransportInterface4. DataChannel原创 2020-05-14 22:03:04 · 4742 阅读 · 4 评论 -
WebRTC源码分析——记一次Offer && Answer SDP备用
1. 引言这两个sdp是进行1v1会话时获取的,这个会话中有:双向传递音视频 + 单向传递1路白板视频(抓取桌面) + 双向数据通道。此处记录下来,用于后续分析2. Offer SDPv=0o=- 6577481781483453854 2 IN IP4 127.0.0.1s=-t=0 0a=group:BUNDLE 0 1 2 3a=msid-semantic: WMS audio_label video_labelm=audio 9 UDP/TLS/RTP/SAVPF 111 103原创 2020-05-10 17:57:00 · 1132 阅读 · 0 评论 -
WebRTC源码分析-呼叫建立过程之四(下)(创建数据通道DataChannel)
1. 引言创建完PeerConnectionFactory 和 PeerConnection这两个API层的操盘对象之后,紧接着需要初始化本地的媒体,也即创建本地的音频轨、视频轨、数据通道,并将这些本地的媒体轨道添加到PeerConnection对象中。如图中红色标注所示。本文将详细描述上述数据通道的创建细节。2. 数据通道的创建3. 数据通道对象4. 总结...原创 2020-05-07 10:49:45 · 4873 阅读 · 2 评论 -
WebRTC源码分析-呼叫建立过程之四(中)(创建并添加本地视频轨到PeerConnection)
引言原创 2020-05-05 11:15:33 · 3939 阅读 · 9 评论 -
WebRTC源码分析——RtpTransceiver类
1. 引言RtpTransceiver类实现了api层的RtpTransceiverInterface接口,2. RtpTransceiver3. 总结原创 2020-04-29 23:21:11 · 1501 阅读 · 1 评论 -
WebRTC源码分析-呼叫建立过程之十(获取远端流,OnAddTrack)
占位原创 2020-04-26 10:40:02 · 1877 阅读 · 3 评论 -
WebRTC源码分析-呼叫建立过程之八(创建Answer,CreateAnswer)
占位原创 2020-04-26 10:38:50 · 1514 阅读 · 0 评论 -
WebRTC源码分析-呼叫建立过程之七(设置远端SDP,SetRemoteDescription)
占位原创 2020-04-26 10:38:09 · 2626 阅读 · 1 评论 -
WebRTC源码分析-呼叫建立过程之六(设置本地SDP,SetLocalDescription)
占位原创 2020-04-26 10:37:34 · 2625 阅读 · 5 评论 -
WebRTC源码分析-呼叫建立过程之五(创建Offer,CreateOffer,上篇)
占位原创 2020-04-26 10:36:32 · 5615 阅读 · 11 评论 -
WebRTC源码分析-呼叫建立过程之四(上)(创建并添加本地音频轨到PeerConnection)
占位原创 2020-04-26 10:35:45 · 4958 阅读 · 3 评论 -
WebRTC源码分析——引用计数系统
1. 引言WebRTC中自己实现了一套引用计数系统,在其基础库模块rtc_base/refcount中提供了相关实现,如下图所示:主要由四个类RefCountInterface、RefCounter、RefCountedObject、scoped_refptr一起构建起WebRTC中的引用计数系统。2. RefCountInterfaceRefCountInterface是一个抽象接口类...原创 2020-04-21 00:14:21 · 2976 阅读 · 9 评论 -
WebRTC源码分析——随机值(数、字符串)生成系统
1 引言WebRTC的rtc_base/helpers.h 和 rtc_base/helpers.cc提供了生成随机值的各种方法:生成多样长度的随机字符串、生成UUID、生成32位/64位的整数随机ID、生成随机的Double浮点型值,生成大于0的32位整数随机ID值等等。本文将对这个随机值生成模块进行详细的介绍,由于时间关系,暂且先放置到这儿占位,以便其他文章引用,有时间就来完成文本的详细描...原创 2020-04-19 12:13:20 · 1769 阅读 · 0 评论 -
WebRTC源码分析——Call模块
目录1. 引言2. Call对象的创建2.1 创建CallFactory对象2.2 创建Call对象2.2.1 PeerConnection.CreateCall_w2.2.2 CallFactory.CreateCallCall::Create3 Call功能详述4 总结1. 引言Call模块是WebRTC会话中不可缺少的一个模块,一个Call对象可以包含多个发送/接收流,且这些流对应同一个...原创 2020-04-18 22:16:56 · 2926 阅读 · 4 评论 -
WebRTC源码分析——RtcEventLog事件日志模块
1. 引言从RtcEventLog的名称粗略看来是WebRTC中的事件日志系统,具体是做什么,如何做的,当前还未看全源码,所以不便下结论。比较确定的是RtcEventLog和WebRTC中RTC_LOG宏所输出的日志是不相干的两个系统。2. RtcEventLog对象的创建3. RtcEventLog对象的作用4. 总结...原创 2020-04-17 09:42:29 · 1317 阅读 · 7 评论 -
WebRTC源码分析——共享智能指针rtc::scoped_refptr
先占位,给其他文章引用原创 2020-04-04 16:28:20 · 865 阅读 · 0 评论 -
WebRTC源码分析——引用计数rtc::RefCountedObject
先占个位置,方便其他文章引用,后续将进行分析原创 2020-04-04 16:15:05 · 1171 阅读 · 0 评论 -
Windows平台下WebRTC源码下载及编译
由于文章在有道云笔记中写的,粘贴复制到csdn很多图片没法一次性上传上,因此就不在博客上粘贴了,此处粘贴下我的有道云笔记的链接:文档:Windows平台下Webrtc编译.note...原创 2020-01-17 21:16:21 · 925 阅读 · 6 评论 -
保存webrtc::VideoFrame到YUV文件
void SaveVideoFrameToFile(const webrtc::VideoFrame& frame, std::string file) { rtc::scoped_refptr<webrtc::VideoFrameBuffer> vfb = frame.video_frame_buffer(); static FILE *fp = fo...原创 2020-01-02 15:58:10 · 2079 阅读 · 0 评论 -
WebRTC源码分析——呼叫建立过程之三(创建PeerConnection)
0 前言当端与服务器建立连接之后,可以通过与服务器的信令交互获知对等端点的存在。当需要与对方端点建立P2P连接时,第一步是先创建PeerConnectionFactory对象,然后再通过PeerConnectionFactory工厂来创建PeerConnection对象。如图中红色字体所示。在example/peerconnection_client工程中,发起方调用如下代码来创建PeerC...原创 2019-11-25 23:32:53 · 8881 阅读 · 11 评论 -
WebRTC源码分析-PeerConnectionFactory简述
前言本文简单的描述下PeerConnectionFactory类持有的数据成员,以及除了创建PeerConnection外还提供哪些能力,但不对这些方法进一步跟踪源码,留待以后。PeerConnectionFactory的数据成员 bool wraps_current_thread_; // 信令线程是否Wrap而来 rtc::Thread* network_thread_; ...原创 2019-11-22 17:13:00 · 1438 阅读 · 0 评论 -
WebRTC源码分析-线程安全之Proxy,防止线程乱入
占位原创 2019-11-21 21:59:01 · 2334 阅读 · 3 评论 -
WebRTC源码分析-线程基础之跨线程同步MethodCall
前言MethodCall类位于WebRTC的api/proxy.h中,如其名而知该类的作用是进行某个方法调用。实际上,是用来实现某个指定方法在指定线程上同步执行并返回结果的效果。其实该文件中并没有真正的MethodCall类,而是MethodCall0,MethodCall1,…,MethodCall5,还有ConstMethodCall0,ConstMethodCall1。这些数字代表什么意思...原创 2019-11-21 21:49:13 · 1580 阅读 · 3 评论 -
WebRTC源码分析-线程基础之Message && MessageData && MessageHandler
目录前言消息Message消息MessgeData消息处理器MessageHandler总结前言本文将介绍消息循环中的消息(Message),消息中持有的数据(MessageData),处理消息的Handler(MessageHandler)的基本内容。其中Message与MessageData相关的结构体位于rtc_base/message_queue.h中,Me...原创 2019-11-15 16:17:31 · 1111 阅读 · 0 评论 -
WebRTC源码分析-定位之Location
Location类提供了一个对象构建时所在位置的基础信息,是chromium项目中的https://code.google.com/p/chromium/codesearch#chromium/src/base/location.h精简版本。在WebRTC项目中位于rtc_base/location.h和rtc_base/location.cc中。class Location { publ...原创 2019-11-16 23:22:32 · 552 阅读 · 0 评论 -
WebRTC源码分析-线程基础之MessageQueue
目录前言MQ的基本成员MQ的构造及析构MQ的SizeMQ的运行状态消息获取消息投递消息处理消息清理销毁消息前言MessageQueue提供了两方面的功能,消息循环中的消息队列功能以及通过持有SocketServer对象带来的IO多路复用功能。在MessageQueue内部这两部分功能不是完全孤立的,而是相互配合在一起使用。尤其是在MessageQue...原创 2019-11-15 16:18:27 · 1161 阅读 · 0 评论 -
WebRTC源码分析-线程基础之MessageQueueManager
目录前言MessageQueueManager的构造MessageQueue的添加与移除清理处理所有MQ中的消息总结前言正如其名,MessageQueueManager类(后续简写为MQM)提供了MessageQueue(简写为MQ)的管理功能。在之前的文章中已经分析过,MQ在构建时会调用MQ.DoInit()方法,该方法将MQ添加到MQM的内部std::Vecto...原创 2019-11-15 16:17:03 · 891 阅读 · 1 评论 -
WebRTC源码分析-线程基础之消息循环,消息投递
目录前言消息循环的建立Post消息Send消息Invoke跨线程同步执行方法总结前言如之前的总述文章所述,rtc::Thread类封装了WebRTC中线程的一般功能,比如设置线程名称,启动线程执行用户代码,线程的join,sleep,run,stop等方法;同时也提供了线程内部的消息循环,以及线程之间以同步、异步方式投递消息,同步方式在目标线程执行方法并返回结果等线...原创 2019-11-15 16:09:31 · 1985 阅读 · 1 评论 -
WebRTC源码分析-线程基础之线程基本功能
目录前言Thread对象的创建线程的启动线程的终止线程的sleep,join以及阻塞权限获取当前线程对象 && 判断是否是当前线程线程的Wrap总结前言如之前的总述文章所述,rtc::Thread类封装了WebRTC中线程的一般功能,比如设置线程名称,启动线程执行用户代码,线程的join,sleep,run,stop等方法;同时也提供了线程内...原创 2019-11-13 20:03:51 · 2710 阅读 · 2 评论 -
WebRTC源码分析-线程基础概述
目录基础功能类的继承图源码分析WebRTC实现了跨平台(Windows,MacOS,Linux,IOS,Android)的线程类rtc::Thread,WebRTC内部的network_thread,worker_thread,signaling_thread均是该类的实例。该类的源码位于rtc_base目录下的thread.h与thread.cc中。基础功能rtc:: T...原创 2019-11-08 19:57:17 · 1442 阅读 · 1 评论 -
WebRTC源码分析-线程基础之线程管理
前言WebRTC中的线程管理是通过ThreadManager对象来实施的,该类起着牧羊者的作用,rtc::Thread类对象就是羊群。其通过什么样的技术来实现对rtc::Thread管理的?在不同的系统平台下如何实现?下文将进行阐述。该类的声明和定义与Thread类一样,位于rtc_base目录下的thread.h与thread.cc文件中。先看其类的声明:class Thread...原创 2019-11-08 19:44:15 · 2340 阅读 · 1 评论 -
WebRTC源码分析-呼叫建立过程之一(综述)
前言基于WebRTC源码下example/peerconnect_client,example/peerconnect_server工程打算写一个典型的呼叫建立过程的源码分析系列文章,本文是一个序章。example/peerconnect_client与,example/peerconnect_server实现了一个Demo性质的P2P音视频会话程序,其中有3个主要的类:MainWnd类进行界面...原创 2019-11-20 18:08:02 · 5888 阅读 · 3 评论 -
WebRTC源码分析——呼叫建立过程之二(创建PeerConnectionFactory)
占位原创 2019-11-20 18:06:50 · 6574 阅读 · 11 评论