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

相关推荐
OpenLoong 开源社区3 天前
打破 NAT 限制,零侵入跨网络通信:基于 WebRTC 的透明 TCP 隧道跨网络通信方案
网络协议·tcp/ip·开源·webrtc·openloong开源社区
探鸽小钛6 天前
4G 终端 ES8311 - 挂断一次,下次说话就没声了之解决办法
物联网·音视频·嵌入式·esp32·webrtc
草根大哥7 天前
AI 编程实践之自建视频CDN
音视频·webrtc·低延迟直播·视频cdn·低延迟cdn
EasyCVR7 天前
应急指挥怕延迟?聊聊视频汇聚/视频融合/视频分析EasyCVR平台WebRTC低延迟方案
音视频·webrtc·easycvr
TrueDei8 天前
WebRTC ICE 候选变成 mDNS 地址导致连接失败:原因分析与解决方案
webrtc
中屹指纹浏览器svip11 天前
WebRTC泄露是什么,怎么关闭?
webrtc
海边捡石子12 天前
从零设计一个通用智能电话平台:FreeSWITCH + ESL + AI 实战架构
人工智能·架构·webrtc
音视频牛哥12 天前
不换摄像机,也能接入 WebRTC?SmartMediaKit RTSP/RTMP 转 WHIP 技术实践
音视频·webrtc·smartmediakit·rtsp转whip·rtmp转whip·whip推流·rtsp转webrtc播放
直播技术开发交流14 天前
Android 端 WHIP 协议推流技术实践:相机/录屏/多路转发WHIP实现测试
webrtc·android whip·rtsp转whip·毫秒级实时媒体流·whip低延时推送·whip推送实现·rtsp转webrtc
程序员阿明16 天前
docker搭建视频流服务go2rtc,webRTC
docker·容器·webrtc