༄yi笑奈何
一个腐败糜烂的环境,永远也无法孕育出真正的文明
展开
-
【WebRTC---源码篇】(二十五)音视频同步
音视频同步原创 2023-12-21 18:47:25 · 931 阅读 · 0 评论 -
【WebRTC---源码篇】(二十四)GCC获取码率后的分配
GCC原创 2023-08-09 19:45:23 · 2160 阅读 · 0 评论 -
【WebRTC---源码篇】(二十三)JitterBuffer之Buffer
JitterBuffer原创 2023-08-02 12:26:07 · 271 阅读 · 0 评论 -
【WebRTC---源码篇】(二十二)WebRTC的混音处理
WebRTC音频处理原创 2023-07-29 13:55:07 · 1081 阅读 · 0 评论 -
【WebRTC---源码篇】(二十一)TransportCC算法
TransportCC原创 2023-07-25 20:44:58 · 160 阅读 · 0 评论 -
【WebRTC---源码篇】(二十)WEBRTC/RTCP RR持续更新中)
待续----------------原创 2023-07-06 19:17:55 · 99 阅读 · 0 评论 -
【WebRTC---源码篇】(十九)模块的执行-Module
WebRTC Module原创 2022-12-08 11:50:51 · 199 阅读 · 0 评论 -
【WebRTC---源码篇】(十八)GoogREMB算法
延时拥塞控制算法原创 2022-11-15 20:30:15 · 302 阅读 · 0 评论 -
【WebRTC---源码篇】(十七)WebRTC音频引擎
webrtc音频引擎原创 2022-11-05 16:49:44 · 362 阅读 · 0 评论 -
【WebRTC---源码篇】(十六)WebRTC/NetEQ
进行抖动控制和丢包隐藏,通过该技术可以让音频更平滑。原创 2022-10-11 12:26:37 · 388 阅读 · 0 评论 -
【WebRTC---源码篇】(十三)WebRTC/Pacer
WebRTC/Pacer原创 2022-10-07 15:15:50 · 446 阅读 · 0 评论 -
【WebRTC---源码篇】(十二)WebRTC/RTX协议
WebRTC RTX原创 2022-10-07 11:14:07 · 367 阅读 · 0 评论 -
【WebRTC---源码篇】(十一:一)采集编码发送期间使用时间戳的详细解读
WebRTC时间戳原创 2023-12-21 15:42:55 · 944 阅读 · 4 评论 -
【WebRTC---源码篇】(十一)WebRTC编码H264视频帧与RTP打包
webrtc H264原创 2022-10-06 19:42:15 · 887 阅读 · 0 评论 -
【WebRTC---源码篇】(十:一)WEBRTC 发送视频RTP包
webrt发送rtp包原创 2023-09-05 16:07:29 · 496 阅读 · 0 评论 -
【WebRTC---源码篇】(十:零)WEBRTC/StreamStatisticianImpl持续更新中)
RR原创 2023-10-13 21:56:41 · 530 阅读 · 0 评论 -
【WebRTC---源码篇】(十)WEBRTC/RTCP SR持续更新中)
RTCP原创 2022-09-06 21:13:35 · 346 阅读 · 2 评论 -
【WebRTC---源码篇】(九)媒体协商与网络传输(持续更新)
媒体协商原创 2022-06-06 19:38:58 · 294 阅读 · 0 评论 -
【WebRTC---源码篇】(八)音频数据采集
Audio Device Module原创 2022-04-26 16:53:20 · 641 阅读 · 0 评论 -
【WebRTC---源码篇】(七)NACK的处理流程
NACK原创 2022-06-06 20:15:43 · 292 阅读 · 0 评论 -
【WebRTC---源码篇】(六)NACK判断包位置的关键算法
首先保证a与b不相等template <typename T, T M = 0>inline bool AheadOf(T a, T b) { static_assert(std::is_unsigned<T>::value, "Type must be an unsigned integer."); return a != b && AheadOrAt<T, M>(a, b);}template..原创 2022-04-24 18:53:54 · 333 阅读 · 0 评论 -
【WebRTC---源码篇】(五)WebRTC视频引擎
1. 视频数据的采集时间2.视频分发器VideoBroadCaster视频数据如何进入分发器原创 2022-04-21 21:44:32 · 336 阅读 · 0 评论 -
【WebRTC---源码篇】(四)WebRTC线程模型
常见的线程模型1.为了解决频繁线程创建与销毁,在此模型中使用的线程池。在线程池创建的时候就将一些线程创建起来,以提高效率。通过控制线程数量来解决线程频繁切换。2.一般线程与线程存在前后关系的,线程执行完毕之后生成一个新的任务(task1 , task2,task3---)插入到任务队列中。由线程控制器分配一个新的线程执行。1.程序启动时就分配多个线程,每个线程都有自己的任务队列进行处理。如果任务队列全部处理完毕就进入休眠状态。2.可以使用事件处理机制,队列中有消息,就发送一个事件原创 2022-03-07 20:40:57 · 591 阅读 · 1 评论 -
【WebRTC---源码篇】(三:一)音频轨
音频轨原创 2023-08-02 16:05:07 · 1084 阅读 · 0 评论 -
【WebRTC---源码篇】(三)Windows/Linux视频采集封装模块
//Window/Linux 对WebRTC视频采集类接口做的封装,实现了Source接口class CapturerTrackSource : public webrtc::VideoTrackSource { public: static rtc::scoped_refptr<CapturerTrackSource> Create() { const size_t kWidth = 640; const size_t kHeight = 480; const.原创 2020-12-10 22:03:51 · 579 阅读 · 0 评论 -
【WebRTC---源码篇】(二:三)视频消费者VideoSinkInterfacee
【代码】【WebRTC---源码篇】(二:三)视频消费者VideoSourceBase。原创 2023-08-30 16:33:57 · 467 阅读 · 0 评论 -
【WebRTC---源码篇】(二:二)视频源VideoSourceBase
2.此外还持有SinkPair数组,SinkPair中包含VideoSinkInterface<webrtc::VideoFrame>,它是视频源的消费者,一般Sink使用者都会继承这个类,并且这个类具有处理webrtc::VideoFrame的能力,1.VideoSourceBase是一个音频源承上启下的中间件,它首先继承模板类VideoSourceInterface并且接收参数<webrtc::VideoFrame>,有处理<webrtc::VideoFrame>的能力。}来获取消费者列表。原创 2023-08-30 16:25:47 · 1083 阅读 · 0 评论 -
【WebRTC---源码篇】(二:一)PeerConnection详解
webrtc添加轨原创 2023-08-02 11:52:29 · 816 阅读 · 0 评论 -
【WebRTC---源码篇】(二)PeerConnectionFactory
在初始化之后,使用PC之前需要先创建和初始化PeerConnectionFactory对象,因为PC的创建使用了工厂模式。实现在InitializePeerConnection()中实现,其中还调用了 PC的创建以及添加相关轨//创建PC Factory,这个函数会在用户呼叫对方,或者收到对方呼叫信息时调用bool Conductor::InitializePeerConnection() { RTC_DCHECK(!peer_connection_factory_); RTC_DCHECK原创 2020-11-09 08:23:11 · 466 阅读 · 0 评论 -
【WebRTC---源码篇】(一)全局初始化
一,任何平台的客户端在使用WebRTC的API之前都需要进行一些初始化操作,主要是设置实验性功能开关,初始化SSL,当然也可以启用trace,设置日志输出等。Windows和Linux端的初始化 rtc::WinsockInitializer winsock_init; rtc::Win32SocketServer w32_ss; rtc::Win32Thread w32_thread(&w32_ss); rtc::ThreadManager::Instance()->原创 2020-11-07 14:50:05 · 679 阅读 · 0 评论 -
【WebRTC---序篇】(二十)视频渲染
视频渲染原创 2023-03-08 15:40:00 · 318 阅读 · 0 评论 -
【WebRTC---序篇】(七)RTC多人连麦方案
多人会议方案原创 2023-08-01 17:32:53 · 1348 阅读 · 0 评论 -
【WebRTC---序篇】(六)Webrtc native开发流程
Webrtc native开发流程原创 2023-03-08 11:51:13 · 257 阅读 · 0 评论 -
【WebRTC---序篇】(五)信令逻辑
信令逻辑原创 2023-03-07 21:57:44 · 266 阅读 · 0 评论 -
【WebRTC---序篇】(四)一对一实时通信架构与peerconnection_client的构成
一对一实时通信架构与peerconnection_client的构成原创 2023-03-07 21:23:37 · 117 阅读 · 0 评论 -
【WebRTC---序篇】(二)Windows平台WebRTC源码编译
需要准备的东西(一)一个强大的梯子(懂得都懂)!!!!!!!!!(二) 下载depot_toolsWindows指定地址必须在此下载打开这个页面,找 install depot_tools 这个关键字请把他解压到C盘,并且设置到PATH环境变量种,且让它处于最顶端。其他需要设置的额外变量DEPOT_TOOLS_WIN_TOOLCHAIN = 0(三) 以管理员身份,进入cmd,到depot_tools目录,执行以下语句,出现如图所示为正确如果不一样,请进行修改(...原创 2022-04-16 18:14:21 · 761 阅读 · 0 评论 -
【WebRTC---序篇】(一)为什么要使用WebRTC
1.1.1自研直播客户端架构一个最简单的直播客户端至少应该包括音视频采集模块,音视频编码模块,网络传输模块,音视频解码模块和音视频渲染模块五大部分。如下图所示1.1.2拆分音视频模块在实际开发中,音频和视频处理完全是独立的。如下图所示,经过细分后,音频采集与视频采集模块是分开的,音频编解码与视频编解码模块也是分开的。也就是说音频采用了一条处理流程,视频采用了一条处理流程。它们之间不相交,在音视频处理中,我们一般称每一条音频或者每一条视频为(轨)。1.1.3 跨平台对于..原创 2022-01-26 14:47:38 · 2062 阅读 · 0 评论 -
【WebRTC---算法原理篇】(二)BBR拥塞控制算法解析
正文之前,给出本文的图例:BBR的组成bbr算法实际上非常简单,在实现上它由5部分组成:1.即时速率的计算计算一个即时的带宽bw,该带宽是bbr一切计算的基准,bbr将会根据当前的即时带宽以及其所处的pipe状态来计算pacing rate以及cwnd(见下文),后面我们会看到,这个即时带宽计算方法的突破式改进是bbr之所以简单且高效的根源。计算方案按照标量计算,不再关注数据的含义。在bbr运行过程中,系统会跟踪当前为止最大的即时带宽。2.RTT的跟踪bbr之所以可以获取非常原创 2020-11-23 09:56:57 · 1295 阅读 · 0 评论 -
【WebRTC---优化篇】(一)Qos优化杂记
JitterBuffer延迟换流畅在丢包+延迟+抖动的弱网环境下,推流端通过NACK+FEC等方式做了一定的容错,但是可能并不能百分之百解决所有问题,而且通过SFU分发到拉流端之后,拉流端网络也可能有问题,这个时候需要JitterBuffer来做媒体包的缓存,例如视频JitterBuffer,它不只缓存视频包,还组帧,还期望组成连续的可解码的GOP,一旦有一个帧的包丢失,就需要等待,如果较长时间无法恢复就丢弃剩余的整个GOP,如果恢复的比较晚,等到音视频同步完去渲染发现这一系列帧已经太晚了,会直接扔掉或原创 2022-03-08 20:03:07 · 1031 阅读 · 0 评论 -
【WebRTC---进阶篇】(六)SELECT网络模型
select函数原型intWSAAPIselect( _In_ int nfds, _Inout_opt_ fd_set FAR * readfds, _Inout_opt_ fd_set FAR * writefds, _Inout_opt_ fd_set FAR * exceptfds, _In_opt_ const struct timeval FAR * timeout );函数功能:监视多个文件描述符的状态变化,在IO中负责IO的第一步原创 2020-10-13 17:22:19 · 241 阅读 · 0 评论