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等,都是如此

相关推荐
红米饭配南瓜汤3 天前
WebRTC 发送端 SSRC 生成流程总结
网络·网络协议·音视频·webrtc·媒体
小柯博客3 天前
从零开始WebRTC(一)
stm32·单片机·嵌入式硬件·青少年编程·嵌入式·webrtc
Paraverse平行云7 天前
实时云渲染云推流突破UE像素流传输数据单个消息64KB限制
云计算·webrtc·unreal engine
MagicSakuraD14 天前
LiveKit 的核心概念
webrtc
RTC老炮19 天前
webrtc弱网-AlrDetector类源码分析与算法原理
服务器·网络·算法·php·webrtc
不会吃萝卜的兔子20 天前
go webrtc - 2 webrtc重要概念
webrtc
ayaya_mana20 天前
BilldDesk:基于Vue3+WebRTC+Nodejs+Electron的开源远程桌面控制
electron·开源·webrtc
她超甜i21 天前
前端通过后端给的webrtc的链接,在前端展示,并更新实时状态
前端·javascript·webrtc
计算机小手22 天前
高效 P2P 文件传输工具:FileSync 利用 WebRTC 技术实现极速安全传输
经验分享·docker·webrtc·开源软件
AI码上来23 天前
当小智 AI 遇上数字人,我用 WebRTC 打造实时音视频应用
人工智能·webrtc·实时音视频