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

相关推荐
EasyDSS2 天前
场景深耕:低延迟高并发EasyDSS无人机RTMP高清推流直播技术剖析
ffmpeg·webrtc·rtmp
EasyDSS2 天前
EasyDSS以视频点播VOD/高清直播/WebRTC视频会议/语音转写STT技术创新,解决校园数字化核心难题
音视频·webrtc·语音识别·点播技术·流媒体直播
daad7774 天前
WEBRTC DTLSv1.2 加密示例
webrtc
淡泊if4 天前
低延迟直播终极方案:WebRTC + MediaMTX,延迟<500ms!
webrtc·视频流·mediamtx
Eanve5 天前
python搭建webrtc音视频服务端客户端
python·音视频·webrtc
@大吉6 天前
【思维导图】一图了解WebRTC通信流程,以及SFU和MediaSoup
webrtc·mediasoup
却道天凉_好个秋6 天前
WebRTC(十六):NetEQ
webrtc·neteq·fec
zhuxian20096 天前
webrtc两个client配对交互信令流程
webrtc
REDcker7 天前
WebRTC 源码架构深度解析
架构·webrtc
EasyDSS7 天前
EasyDSS如何基于LiveKit/AI大模型/AI会议助手/语音转写STT技术破解音视频应用核心痛点
人工智能·音视频·webrtc·语音识别·点播技术·流媒体直播