
webrtc
airmanisvip
性格开朗,热爱工作 热爱学习,积极向上
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
webrtc中的transport
即底层收到数据后要触发SignalReadPacket从而调用OnReadPacket,在RtpTransport::OnReadPacket()中又会调用其虚函数OnRtpPacketReceived(),虚函数,对象,RtpTransport对象中直接能获取到P2PTransportChannel的数据,见 RtpTransport::SetRtpPacketTransport()中的信号槽连接。如果启用dtls则先建立dtls连接,建立dtls连接后收到数据也是直接抛给了RtpTransport。原创 2022-09-26 19:30:42 · 632 阅读 · 0 评论 -
webrtc中的p2p代码的使用
3 对端收到,判断role类型,如果冲突则与远端对比tie breaker值来判断本端应该是什么角色,谁大谁是controlling,同时controlling端要发送487响应给对端,对端根据这个来修改其role为controlled。2 发送bind request的请求里要包含ice-controlling这个属性,且属性里要有Tie breaker字段。1 一开始两端都把自己设置为controlling。结合webrtc代码我们可以单独使用其p2p模块。原创 2022-09-26 11:12:35 · 452 阅读 · 0 评论 -
PeerConnection中对SDP的认证过程
在PeerConnection中无论是SetLocalDescription还是SetRemoteDescription,里面的第一个都是对SDP进行认证检测即调用ValidateSessionDescription,在ValidateSessionDescription中主要对如下三个方面进行了认证:1 加密信息认证2 ice信息认证3 m-section中track个数进行认证。...原创 2022-08-31 14:45:16 · 484 阅读 · 0 评论 -
裁剪sdp中编解码器信息
在使用peerconnection进行rtc开发时,其默认生成的sdp信息中有比较多的H264编码器信息,这会导致sdp内容略大如何在不修改webrtc内部代码的前提下精简H264编码信息,方法很简单,我们只需定义。原创 2022-08-31 09:34:45 · 323 阅读 · 0 评论 -
从SDP说起
SDP的介绍可以直接看相关的文档rfc8866,里面对SDP进行了定义,并且网上也有很多优秀的文章,本文仅对一个示例进行分析,标识出个人觉得需要注意的地方。原创 2022-08-29 17:15:31 · 338 阅读 · 0 评论 -
webrtc中视频采集后到发送过程
VideoStreamEncoder::OnFrame |VideoStreamEncoder::MaybeEncodeVideoFrame |VideoStreamEncoder::EncodeVideoFrame | VideoSender::AddVideoFrame | VCMGenericEncoder::Encode | H264EncoderImpl::Encode | .原创 2022-01-20 17:33:23 · 2148 阅读 · 1 评论 -
webrtc中Transport-CC带宽计算流程
基于丢包RTCPReceiver::IncomingPacket |RTCPReceiver::TriggerCallbacksFromRtcpPacket |BitrateControllerImpl::OnReceivedRtcpReceiverReport |SendSideBandwidthEstimation::UpdateReceiverBlock |SendSideBandwidthEstimation::UpdatePacketsLost |SendSideBandw.原创 2022-01-20 17:26:24 · 2511 阅读 · 0 评论 -
webrtc中音视频数据传递过程
webrtc中拉流时rtp数据传递过程原创 2022-01-14 17:09:52 · 1650 阅读 · 0 评论 -
数据是怎样被分离到DataChannel中的
将数据分离到datachannel中原创 2022-01-13 19:09:09 · 1468 阅读 · 0 评论 -
DataChannel的被动创建之sctp_transport_的创建
DataChannel的被动创建之sctp_transport_的创建原创 2022-01-12 18:33:19 · 259 阅读 · 0 评论 -
DataChannel的被动创建
webrtc中datachannel的被动创建过程原创 2022-01-12 17:10:44 · 247 阅读 · 0 评论 -
PeerConnectionFactory的创建(二)
MediaEngine的创建函数:文件 : media\engine\webrtcmediaengine.cc类名 : cricket::WebRtcMediaEngineFactorystatic MediaEngineInterface* Create(....);WebRtcMediaEngineFactory声明:class WebRtcMediaEngineFactory{ public: // Create a MediaEngineInterface with o原创 2021-08-02 10:25:38 · 194 阅读 · 0 评论 -
PeerConnectionFactory的创建(一)
名称:PeerConnectionFactory作用:创建PeerConnection及全局相关的变量文件:pc\peerconnectionfactory.cc核心成员变量及类型:std::unique_ptr<cricket::ChannelManager> channel_manager_;std::unique_ptr<rtc::BasicNetworkManager> default_network_manager_;st原创 2021-07-30 14:36:40 · 528 阅读 · 0 评论 -
webrtc中音频帧时间戳的打印
采集时封装格式AudioFrame:见Channel::ProcessAndEncodeAudioOnTaskQueue()audio_input->timestamp_ = _timeStamp; //_timeStamp初始值为 0 _timeStamp += static_cast<uint32_t>(audio_input->samples_per_channel_);audio_input->timestamp_的值为采样个数的累加,以48000采样率为例原创 2021-04-26 14:11:38 · 603 阅读 · 0 评论 -
webrtc中视频帧时间戳的打印
封装形式:webrtc::VideoFrame时间戳:uint32_t timestamp_rtp_; rtp时间戳 默认为 0 编码前赋值int64_t ntp_time_ms_; ntp时间 默认为 0 编码前赋值int64_t timestamp_us_; 采集时系统时间 采集时赋值传输过程:VideoBroadcaster::OnFrame -> VideoStreamEncoder::OnFrame原创 2021-04-23 17:18:54 · 1067 阅读 · 0 评论 -
WebRtc 音频采集到编码
本文以Windows下采集音频到发送给编码器为例,介绍了从数据采集到将数据传递给编码器这个过程的数据传递流程,同时梳理了webrtc中音频相关的channel之间的关系。在此仅以图形的方式做一个记录。1 传递流程2 AudioTransportImpl::RecordDataIsAvailable流程图3 各个channel之间关系4 BaseChann...原创 2019-12-10 17:00:03 · 1142 阅读 · 0 评论 -
WebRtc中定义类似传统thread的使用方式
在创建好Thread对象后,调用Start(rtc::Runnable *runnable)接口启动时,设置runnable参数:如果runnable = NULL,则线程使用自带的消息处理函数ProcessMessage,通过向线程Post消息来执行任务如果runnable 不为空,则线程使用runnable的Run()函数作为其线程函数,通过实现Runnable接口的Run()函数实现...原创 2019-11-28 10:37:04 · 762 阅读 · 0 评论 -
WebRtc 音频编码器
WebRtcVoiceEngine在初始化时收集了当前支持的编码器列表,其步骤如下:void WebRtcVoiceEngine::Init(){ send_codecs_ = CollectCodecs(encoder_factory_->GetSupportedEncoders());}获编码器工厂支持的编码方式encoder_factory_->GetSup...原创 2019-11-27 15:01:10 · 1144 阅读 · 0 评论 -
WebRtc AllocationSequeue类随笔
AllocationSequeue类成员变量:BasicPortAllocatorSession *session_;NetWork *network_;PortConfiguration *config_;UDPPort *udp_port_;AsyncPacketSocket *udp_socket_;...原创 2019-11-27 13:51:50 · 290 阅读 · 0 评论 -
WebRtc 让命令行程序中的主线程可以处理消息
int main(){ rtc::Thread *main_thread_(rtc::Thread::Current()); while(true) { main_thread_->ProcessMessages(100); //100ms } return 0;}原创 2019-11-25 14:02:49 · 240 阅读 · 0 评论 -
PeerConnectionInterface的GetStats接口的使用
一、实现了webrtc::RTCStatsCollectorCallback接口class RtcStatsObserver : virtual public webrtc::RTCStatsCollectorCallback{public: virtual void OnStatsDelivered(const rtc::scoped_refptr<const webrtc::...原创 2019-11-21 16:32:00 · 1192 阅读 · 0 评论 -
获取PeerConnection中视频发送相关的波特率和编码器帧率
注意:相关逻辑要在工作线程调用一、先获取到PeerConnection对象rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_interface_;auto peer_connection_wrapper = static_cast<webrtc::PeerConnectionProx...原创 2019-11-21 16:07:58 · 546 阅读 · 0 评论 -
WebRtc中如何通过PeerConnectionInterface获取到PeerConnection对象?
rtc::scoped_refptr<webrtc::PeerConnectionInterface> peer_connection_interface_;auto peer_connection_wrapper = static_cast<webrtc::PeerConnectionProxyWithInternal<webrtc::PeerConnection...原创 2019-11-21 15:53:38 · 695 阅读 · 0 评论 -
webrtc中的日志相关
1、Debug模式下禁止日志输出在程序启动时 rtc::LogMessage::LogToDebug(rtc::LS_NONE);2、自定义日志接收模块1 定义rtc::LogSink子对象,实现void OnLogMessage(const std::string &message)函数class SampleLogSink:virtual public rtc::LogSin...原创 2019-09-23 10:54:18 · 1722 阅读 · 0 评论 -
mac app 获取不到音视频设备的原因
去Capabilities - App Sandbox 中勾选Hardwre相关选项这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图...原创 2019-09-10 16:09:59 · 1284 阅读 · 0 评论 -
webrtc在mac下的编译命令
1 cd到src目录2 gn gen out/mac_x64_debug --args='target_os="mac" target_cpu="x64" use_rtti=true is_debug=true is_component_build=false rtc_use_h264=true' --ide=xcode3 ninja -C out/mac_x64_debug以上命...原创 2019-07-30 17:04:30 · 1614 阅读 · 0 评论