![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
webrtc
hclbeloved
这个作者很懒,什么都没留下…
展开
-
webrtc-m79-测试peerconnectionserver的webclient-p2p-demo
测试peerconnectionserver的webclient-p2p-demo原创 2023-09-11 15:46:17 · 729 阅读 · 0 评论 -
webrtc-m79-msvc编译H264
webrtc-m79-msvc编译H264原创 2023-08-30 17:08:02 · 842 阅读 · 0 评论 -
创建ffmpeg vs2019工程
ffmpeg vs2019工程的生成原创 2023-08-30 16:25:49 · 1275 阅读 · 0 评论 -
webrtc-m79-采集的像素格式的VideoFrame到渲染窗口和编码器小结
1 相关类图2 小结不论视频流最终目的地是流向本地渲染模块还是要流向编码器,首先都要经过VideoTrack这个对象。webrtc::VideoTrack 和webrtc::VideoTrackSource 都实现了rtc::VideoSourceInterface<VideoFrame> 接口,也就是说他们都是视频流的生产者,但是它们两个都不是视频源的最初的生产者,最初的视频生产者是 webrtc::test::VcmCapturer ;代...原创 2022-05-16 09:44:19 · 484 阅读 · 0 评论 -
webrtc-m79-视频采集器到视频编码器流水线的建立
1 问题视频采集器采集到像素格式的VideoFrame经过编码后才能通过P2PtransportChannel传递给对端,这其中就包括了两个主要环节:第一个环节:采集器到编码器之间流水线的建立;第二个环节:采集到的像素格式的VideoFrame沿着流水线送到编码器,并发送到对端;2 采集器到编码器之间流水线的建立3 相关代码3.1 采集器到编码器之间流水线的建立///////////////////////////////////////////////..原创 2022-05-14 20:05:43 · 1068 阅读 · 0 评论 -
webrtc-m79-本地采集的视频渲染流程
1 问题本文主要以windows为例,基于peerconnection_client的例子来讲解本地采集的视频是如何渲染到本地的窗口上的。该问题主要分为两个环节:第一个环节:需要建立渲染窗口到视频采集器的流水线的建立;第二个环节:采集的视频沿着流水线送到渲染窗口;注意:视频采集器采集到的是像素格式(RGB或者YUV)的VideoFrame,此时还没有编码(比如:VP8/VP9/H264/H265等)成视频帧;2 VideoTrack到渲染窗口流水线的建立原创 2022-05-14 16:06:17 · 618 阅读 · 0 评论 -
webrtc-m79-RTCP包的路由
1 入口PacketReceiver::DeliveryStatus Call::DeliverPacket( MediaType media_type, rtc::CopyOnWriteBuffer packet, int64_t packet_time_us) { RTC_DCHECK_RUN_ON(&configuration_sequence_checker_); if (IsRtcp(packet.cdata(), packet.size()))原创 2021-07-08 12:23:44 · 258 阅读 · 0 评论 -
webrtc-m79-PlanB 与 UnifiedPlan
PlanB 和 UnifiedPlan 其实就是 WebRTC 在多路媒体源(multi media source)场景下的两种不同的 SDP 协商方式。如果引入 Stream 和 Track 的概念,那么一个 Stream 可能包含 AudioTrack 和 VideoTrack,当有多路 Stream 时,就会有更多的 Track,如果每一个 Track 唯一对应一个自己的 M 描述,那么这就是 UnifiedPlan,如果每一个 M line 描述了多个 Track(track id)......原创 2021-07-08 08:46:46 · 1052 阅读 · 0 评论 -
webrtc-m79-webrtc:::VideoRtpReceiver 中的 media_channel_的设置
1 代码//unified plan 会进入到这里 //音频和视频都有各自的 RtpTransceiverRTCError PeerConnection::UpdateTransceiverChannel( rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>> transceiver, const cricket::ContentInfo& conten原创 2021-07-08 08:35:38 · 173 阅读 · 0 评论 -
webrtc-m79-VCMPacket中的时间计算
1代码int32_t RtpVideoStreamReceiver::OnReceivedPayloadData( const uint8_t* payload_data, size_t payload_size, const RTPHeader& rtp_header, const RTPVideoHeader& video_header, const absl::optional<RtpGenericFrameDescriptor>原创 2021-07-07 09:24:12 · 316 阅读 · 0 评论 -
TLS-DTLS-SRTP相关总结
0 写在前面这篇文章整理的比较久了,参考了很多文章(记不住链接了),如果侵犯到大家请联系我删除,谢谢。1 HTTPS/SSL/TLS1.1 安全性通常认为,如果通信过程具备了四个特性,就可以认为是“安全”的,这四个特性是:机密性、完整性,身份认证和不可否认。机密性(Secrecy/Confidentiality)是指对数据的“保密”,只能由可信的人访问,对其他人是不可见的“秘密”,简单来说就是不能让不相关的人看到不该看的东西。比如小明和小红私下聊天,但“隔墙有耳”,被小强在旁边的房间里全原创 2021-06-16 09:36:37 · 2045 阅读 · 0 评论 -
webrtc-m79-音视频同步
1 参考链接https://blog.csdn.net/sonysuqin/article/details/107297157https://www.cnblogs.com/jiayayao/p/12649665.html原创 2021-06-09 20:57:38 · 761 阅读 · 1 评论 -
webrtc-m79-webrtc 中的时间计算
1获取“非walltime”时间单位为纳秒, Linux下使用 clock_gettime(CLOCK_MONOTONIC, &ts)2原创 2021-06-09 12:16:12 · 481 阅读 · 0 评论 -
webrtc-m79-视频相关的VCMTiming 中几个 delay 的更新
1 参考链接https://blog.csdn.net/lipku/article/details/104124569https://blog.csdn.net/sonysuqin/article/details/107297157多谢各位的付出。2原创 2021-06-09 09:51:14 · 909 阅读 · 0 评论 -
webrtc-m79-音视频rtcp报文处理
1 RTCPacketReceiver::DeliveryStatus Call::DeliverRtcp(MediaType media_type, const uint8_t* packet, size_t length) { TRACE_EVENT0("webrtc", "Call::Deliver原创 2021-06-03 10:13:03 · 214 阅读 · 0 评论 -
webrtc-m79-音频处理-音频的解码流程
1 代码AudioDeviceWindowsCore::DoRenderThread===> int32_t nSamples = _ptrAudioBuffer->RequestPlayoutData(_playBlockSize); // AudioDeviceBuffer::RequestPlayoutDataint32_t AudioDeviceBuffer::RequestPlayoutData(size_t sample原创 2021-06-02 11:28:00 · 976 阅读 · 0 评论 -
webrtc-m79-音频处理-音频的接收流程
1 代码与视频相比,接收流程的前面的一部分是重合的。void UDPPort::OnReadPacket(rtc::AsyncPacketSocket* socket, const char* data, size_t size, const rtc::SocketAddress& remote_addr,原创 2021-06-02 11:22:55 · 675 阅读 · 0 评论 -
webrtc-m79-音频相关 DecoderDatabase 中 decoders_ 的设置
1 代码void AudioReceiveStream::ConfigureStream(AudioReceiveStream* stream, const Config& new_config, bool first_time) { RTC_LOG(LS_INFO) << "AudioReceiveStream::原创 2021-06-02 11:07:43 · 137 阅读 · 0 评论 -
webrtc-m79-音频相关 internal::Call 中的 config_.audio_state 的来源
1 代码std::unique_ptr<Call> PeerConnectionFactory::CreateCall_w( RtcEventLog* event_log) { RTC_DCHECK_RUN_ON(worker_thread_); webrtc::Call::Config call_config(event_log); if (!channel_manager_->media_engine() || !call_factory_) { r原创 2021-06-02 11:05:12 · 254 阅读 · 0 评论 -
webrtc-m79-VideoReceiveStream中的clock_和timing_
1 clock_Call* CallFactory::CreateCall(const Call::Config& config) { absl::optional<webrtc::BuiltInNetworkBehaviorConfig> send_degradation_config = ParseDegradationConfig(true); absl::optional<webrtc::BuiltInNetworkBehaviorConfig&g原创 2021-05-31 11:35:18 · 224 阅读 · 0 评论 -
webrtc-m79-计算RTT
1 直接在代码中进行分析// 在RTC3550中计算RTT的方式是在 发送端计算 RTT,这里的发送端指的是媒体数据的发送端。媒体数据的发送端会发送SR,SR中含有NTP数据,而媒体// 数据的接收端不仅会接收到媒体数据,还会接收到媒体数据相关的控制数据,比如发送端的SR。当接收端接收到SR后,会从SR包中的NTP时间中提取出32// 位的时间LSR,同时呢接收端还会等待一个时间:DSLR,DSLR过后,接收端发送包含LSR和DSLR等信息的RR包,当发送端接收到RR包后,就可以计算出RTT。/原创 2021-05-30 15:51:08 · 288 阅读 · 1 评论 -
webrtc-m79-RTP NTP 线性回归
1 几个定义2 线性回归过程3 相关类图原创 2021-05-30 09:58:12 · 439 阅读 · 0 评论 -
webrtc-m79-PeerConnection的类图
1 类图2 代码分析原创 2021-05-27 07:38:47 · 202 阅读 · 0 评论 -
webrtc-m79-VideoRtpReceiver::SetStreams的设置逻辑
1 相关代码RTCError PeerConnection::ApplyRemoteDescription( std::unique_ptr<SessionDescriptionInterface> desc) {===> if (IsUnifiedPlan()) { std::vector<rtc::scoped_refptr<RtpTransceiverInterface>> now_receiving_transce原创 2021-05-25 20:51:07 · 180 阅读 · 0 评论 -
webrtc-m79-VideoSinkInterface类图
1 定义namespace rtc {template <typename VideoFrameT>class VideoSinkInterface { public: virtual ~VideoSinkInterface() = default; virtual void OnFrame(const VideoFrameT& frame) = 0; // Should be called by the source when it discards th原创 2021-05-25 11:39:08 · 217 阅读 · 0 评论 -
webrtc-m79-rtc::VideoSourceInterface<webrtc::VideoFrame>类图
1 rtc::VideoSourceInterface<webrtc::VideoFrame>类图原创 2021-05-25 11:15:23 · 239 阅读 · 0 评论 -
webrtc-m79-VideoSink的设置
1 首先来看一下VideoTrackInterface 接口的定义class RTC_EXPORT VideoTrackInterface : public MediaStreamTrackInterface, public rtc::VideoSourceInterface<VideoFrame> { public: // Video track content hint, used to override the source is_screencast .原创 2021-05-25 10:56:21 · 562 阅读 · 0 评论 -
webrtc-m79-VideoRtpReceiver 中的 source_ 和 track_
rtc::scoped_refptr<RtpReceiverProxyWithInternal<RtpReceiverInternal>>PeerConnection::CreateReceiver(cricket::MediaType media_type, const std::string& receiver_id) { rtc::scoped_refptr<RtpReceiverProxyWi.原创 2021-05-25 09:00:50 · 239 阅读 · 0 评论 -
webrtc-m79-VideoRtpReceiver 中的 media_channel_的设置
1 注意看代码中的注释//unified plan 会进入到这里 //音频和视频都有各自的 RtpTransceiverRTCError PeerConnection::UpdateTransceiverChannel( rtc::scoped_refptr<RtpTransceiverProxyWithInternal<RtpTransceiver>> transceiver, const cricket::ContentInfo&原创 2021-05-24 15:01:47 · 230 阅读 · 0 评论 -
webrtc-m79-视频流的接收
void UDPPort::OnReadPacket(rtc::AsyncPacketSocket* socket, const char* data, size_t size, const rtc::SocketAddress& remote_addr, const int64_t&.原创 2021-05-23 21:43:33 · 858 阅读 · 0 评论 -
webrtc-m79-视频解码的流程
void VideoReceiveStream::Start() { RTC_DCHECK_RUN_ON(&worker_sequence_checker_); if (decoder_running_) { return; } const bool protected_by_fec = config_.rtp.protected_by_flexfec || rtp_video_stream_receive.原创 2021-05-23 21:29:41 · 1169 阅读 · 0 评论 -
webrtc-m79-VideoRtpSender、VideoRtpReceiver、RtpTransceiver
1VideoRtpSender的创建BEGIN_SIGNALING_PROXY_MAP(RtpSender)PROXY_SIGNALING_THREAD_DESTRUCTOR()PROXY_METHOD1(bool, SetTrack, MediaStreamTrackInterface*)PROXY_CONSTMETHOD0(rtc::scoped_refptr<MediaStreamTrackInterface>, track)PROXY_CONSTMETHOD0(rtc::.原创 2021-05-23 21:17:34 · 566 阅读 · 1 评论 -
webrtc-m79-外部解码器的注册
bool WebRtcVideoChannel::SetRecvParameters(const VideoRecvParameters& params) { RTC_DCHECK_RUN_ON(&thread_checker_); TRACE_EVENT0("webrtc", "WebRtcVideoChannel::SetRecvParameters"); RTC_LOG(LS_INFO) << "SetRecvParameters: " << pa.原创 2021-05-21 10:13:11 · 336 阅读 · 0 评论 -
webrtc-m79-VideoReceiveStream中的 task_queue_factory_ 的来源
1 首先来看VideoReceiveStream的构造函数VideoReceiveStream::VideoReceiveStream( TaskQueueFactory* task_queue_factory, RtpStreamReceiverControllerInterface* receiver_controller, int num_cpu_cores, PacketRouter* packet_router, VideoReceiveStream:原创 2021-05-20 07:32:40 · 817 阅读 · 0 评论 -
webrtc-m79-ubuntu编译
1参考链接https://blog.csdn.net/foruok/article/details/549444272编译步骤2.1下载代码同windows下载方式2.2安装depot_toolsexport WORKSPACE=$(pwd)git clone https://chromium.googlesource.com/chromium/tools/depot_tools.gitexport PATH=$WORKSPACE/depot_tools:$PATH2...原创 2021-05-16 22:35:43 · 252 阅读 · 0 评论 -
webrtc-m79-视频流接收相关的几张类图
1 Call 的类图2 MediaChannel相关的类图3 RtpReceiver相关的类图4 VideoReceiveStream的类图5 RtpVideoStreamReceiver的类图原创 2021-05-11 20:09:54 · 511 阅读 · 0 评论 -
webrtc-m79-视频流接收过程
void SocketDispatcher::OnEvent(uint32_t ff, int err) {#if defined(WEBRTC_USE_EPOLL) // Remember currently enabled events so we can combine multiple changes // into one update call later. // The signal handlers might re-enable events disabled here, .原创 2021-05-08 17:06:28 · 418 阅读 · 0 评论 -
webrtc-m79-连通性检测-01
struct IceControllerEvent { enum Type { REMOTE_CANDIDATE_GENERATION_CHANGE, NETWORK_PREFERENCE_CHANGE, NEW_CONNECTION_FROM_LOCAL_CANDIDATE, ////////// NEW_CONNECTION_FROM_REMOTE_CANDIDATE, ////////// NEW_CONNECTION_FROM_UNKNOWN_REMOTE...原创 2021-05-06 11:28:34 · 993 阅读 · 0 评论 -
m79-webrtc-DtlsTransport类图
原创 2021-04-21 09:39:21 · 212 阅读 · 0 评论 -
m79-rtc-PacketTransportInternal类图
原创 2021-04-21 09:38:21 · 118 阅读 · 0 评论