webrtc c++ native 获取local sdp流程

news/2024/10/24 0:26:02/

webrtc_c_native_local_sdp_0">webrtc c++ native 获取local sdp流程

一、初始化线程

    rtc::WinsockInitializer winsock_init;rtc::Win32SocketServer w32_ss;rtc::Win32Thread w32_thread(&w32_ss);rtc::ThreadManager::Instance()->SetCurrentThread(&w32_thread);

二、创建peer_connection_factory

    peer_connection_factory_ = webrtc::CreatePeerConnectionFactory(nullptr /* network_thread */, nullptr /* worker_thread */,nullptr /* signaling_thread */, nullptr /* default_adm */,webrtc::CreateBuiltinAudioEncoderFactory(),webrtc::CreateBuiltinAudioDecoderFactory(),webrtc::CreateBuiltinVideoEncoderFactory(),webrtc::CreateBuiltinVideoDecoderFactory(), nullptr /* audio_mixer */,nullptr /* audio_processing */);

三、创建peer_connection

    peer_connection_ = peer_connection_factory_->CreatePeerConnection(config, nullptr, nullptr, this);

四、创建audio track并add进入peer_connection

    rtc::scoped_refptr<webrtc::AudioTrackInterface> audio_track(peer_connection_factory_->CreateAudioTrack(kAudioLabel, peer_connection_factory_->CreateAudioSource(cricket::AudioOptions())));auto result_or_error = peer_connection_->AddTrack(audio_track, { kStreamId });

五、创建video track并add进入peer_connection

rtc::scoped_refptr<CapturerTrackSource> video_device = CapturerTrackSource::Create();rtc::scoped_refptr<webrtc::VideoTrackInterface> video_track_(peer_connection_factory_->CreateVideoTrack(kVideoLabel, video_device));result_or_error = peer_connection_->AddTrack(video_track_, { kStreamId });

六、创建offer

    peer_connection_->CreateOffer(conductor, webrtc::PeerConnectionInterface::RTCOfferAnswerOptions());

七、获取sdp

    void OnSuccess(webrtc::SessionDescriptionInterface* desc) override {printf("xxxxxxxxxxxxxxxxxxxxxxx\n");std::string sdp;desc->ToString(&sdp);}

八、常见问题

  1. 初始化线程最好放到main函数(主线程中),否则OnSuccess回调无法调用

http://www.ppmy.cn/news/1426209.html

相关文章

spring-boot2.3 升级 springboot3过程中遇到的问题汇总

升级前微服务版本 jdkspringbootspring-cloudspring-cloud-alibabanacos1.82.3.2.RELEASEHoxton.SR92.2.6.RELEASE2.0.3 升级后微服务版本 jdkspringbootspring-cloudspring-cloud-alibabanacos173.1.82022.0.52022.0.0.02.0.3 升级过程中遇到的问题记录如下 jdk8 升级到 …

0-1 设计高质量数据可视化大屏

5 大指南塑造高阶可视化 可视化是个友好的媒介 理解数据是成为优秀媒介的关键 业务驱动下的设计策略 图扑设计的无限可能 创新思维让可视化更具价值 可视化是个友好的媒介 我们正处于一个数据泛滥的时代&#xff0c;随处可见数据的身影&#xff0c;更知其不可忽视的重要…

C++:类与对象(上)

目录 前言&#xff1a; 一、类概念的引入 二、类的定义 三、类的访问限定符与封装 1、访问限定符 2、封装 四、类的作用域 五、类的实例化 六、类的大小 七、类的this指针 this指针的特性 前言&#xff1a; C与它的老朋友C语言不同&#xff0c;C语言是面向过程的&am…

Python的pdb调试器中,设置和解除断点可以通过特定的命令来完成

在Python的pdb调试器中&#xff0c;设置和解除断点可以通过特定的命令来完成。以下是详细步骤&#xff1a; 设置断点 在pdb中&#xff0c;你可以使用b&#xff08;或break&#xff09;命令来设置断点。你可以指定要设置断点的行号&#xff0c;或者如果省略行号&#xff0c;则…

采集存储脑电

采集部分&#xff1a; 初始化ADC&#xff1a;首先&#xff0c;需要配置STM32F103RCT6的ADC模块。这包括设置ADC的工作模式&#xff08;例如独立通道模式&#xff09;、扫描模式&#xff08;是否按照顺序扫描多个通道&#xff09;、转换模式、触发源、数据对齐方式以及要转换的通…

开发语言漫谈-PHP

PHP即“Hypertext Preprocessor”&#xff0c;怎么看都看不出怎么缩写为PHP。其实最初称为“Personal Home Page”。和之前介绍的语言不同&#xff0c;他是一种服务器端脚本语言&#xff0c;主要用于开发动态网页。PHP语法简单&#xff0c;而且具有跨平台的特性&#xff0c;开发…

我为什么想成为一名程序员

#为什么你选择成为一名程序员# 目录 原因&#xff1a; 后续选择&#xff1a; 结尾&#xff1a; 原因&#xff1a; 本人是一个00后&#xff0c;出生在农村当时经济相对来说比较落后&#xff0c;村里面基本上都没几个人有手机。当时有些小伙伴他们拿着自己大人的手机在那里玩…

Linux文件的特殊权限(SUID|SGID|SBIT)

一、SUID 介绍&#xff1a;SUID是一种对二进制程序进行设置的特殊权限&#xff0c;能够让二进制程序的执行者临时拥有所有者的权限&#xff08;仅对拥有执行权限的二进制程序有效&#xff09;。 &#xff08;一&#xff09;语法格式 chmod us 文件名&#xff08;设置SUID权限…