WebRTC的三大线程

WebRTC中的三个主要线程:

  1. signaling_thread,信号线程:用于与应用层交互
  2. worker_thread,工作线程(最核心):负责内部逻辑处理
  3. network_thread,网络线程:负责网络数据包的收发

webrtc中的其他线程都是通过这三个线程创建出来的!!

webrtc中创建三个线程的位置:

cpp 复制代码
// src/examples/peerconnection/client/conductor.cc
bool Conductor::InitializePeerConnection() {
	peer_connection_factory_ = webrtc::CreatePeerConnectionFactory();
}

// src/pc/peer_connection_factory.cc
PeerConnectionFactory::PeerConnectionFactory(
    PeerConnectionFactoryDependencies dependencies)
{
	if (!network_thread_) {
	    owned_network_thread_ = rtc::Thread::CreateWithSocketServer(); // CreateWithSocketServer() 用于处理网络事件
	    owned_network_thread_->SetName("pc_network_thread", nullptr);
	    owned_network_thread_->Start();
	    network_thread_ = owned_network_thread_.get();
	}

	  if (!worker_thread_) {
	    owned_worker_thread_ = rtc::Thread::Create(); // Create() 不处理网络事件
	    owned_worker_thread_->SetName("pc_worker_thread", nullptr);
	    owned_worker_thread_->Start();
	    worker_thread_ = owned_worker_thread_.get();
	  }

	  if (!signaling_thread_) {
	    signaling_thread_ = rtc::Thread::Current(); // Current() 默认将主线程当做signal线程
	    if (!signaling_thread_) {
	      signaling_thread_ = rtc::ThreadManager::Instance()->WrapCurrentThread();
	      wraps_current_thread_ = true;
	    }
	  }
}

PS:编码技巧:当传入的参数较多时,可以打包成一个结构体传下去,如dependencies,其中指定

dependencies.network_thread, dependencies.signaling_thread, dependencies.worker_thread 等,

以及火山引擎SDK中的video_frame等,都是如此

相关推荐
RTC老炮6 小时前
webrtc弱网-RembThrottler类源码分析及算法原理
网络·算法·webrtc
派阿喵搞电子9 小时前
在阿里云通过docker部署srs流媒体服务器(支持webrtc、http-flv)
阿里云·docker·webrtc
web前端进阶者1 天前
音视频开发远端未发布视频占位图
音视频·webrtc
fangji9991 天前
自建webrtc低延时分布式街机游戏直播方案
webrtc·游戏直播·街机直播·自建集群·低延时直播
RTC老炮2 天前
webrtc弱网-ReceiveSideCongestionController类源码分析及算法原理
网络·算法·webrtc
福大大架构师每日一题2 天前
pion/webrtc v4.1.6 发布:修复 nil stats getter 问题并升级依赖模
webrtc
RTC老炮3 天前
webrtc弱网-AcknowledgedBitrateEstimatorInterface类源码分析与算法原理
网络·算法·webrtc
卓码软件测评7 天前
第三方媒体流压力测试:k6插件xk6-webrtc的使用来测试媒体流的性能
网络协议·测试工具·http·https·webrtc·ssl·媒体
RTC老炮9 天前
webrtc弱网-BitrateEstimator类源码分析与算法原理
网络·人工智能·算法·机器学习·webrtc
bluesen9 天前
WebRTC获取GB28181监控摄像头实时音视频流的实现方法
音视频·webrtc·gb28181·gb/t.28181