XMeet

Mediasoup视频会议


目录结构

<h1>- WebRTC 根目录结构</h1> <table> <thead> <tr> <th style="text-align: left;">目录</th> <th style="text-align: left;">功能</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">api</td> <td style="text-align: left;">WebRTC接口层,浏览器都是通过该接口调用WebRTC</td> </tr> <tr> <td style="text-align: left;">call</td> <td style="text-align: left;">数据流的管理层,Call代表同一个端点的所有数据的流入流出</td> </tr> <tr> <td style="text-align: left;">video</td> <td style="text-align: left;">与视频相关的逻辑</td> </tr> <tr> <td style="text-align: left;">audio</td> <td style="text-align: left;">与音频相关的逻辑</td> </tr> <tr> <td style="text-align: left;">common_audio</td> <td style="text-align: left;">音频算法相关</td> </tr> <tr> <td style="text-align: left;">common_video</td> <td style="text-align: left;">视频算法相关</td> </tr> <tr> <td style="text-align: left;">media</td> <td style="text-align: left;">与多媒体相关的逻辑处理,如编解码的逻辑处理</td> </tr> <tr> <td style="text-align: left;">logging</td> <td style="text-align: left;">日志相关</td> </tr> <tr> <td style="text-align: left;">module</td> <td style="text-align: left;">最重要的目录,子模块(下一小节独立介绍)</td> </tr> <tr> <td style="text-align: left;">pc</td> <td style="text-align: left;">Peer Connection,连接相关的逻辑层</td> </tr> <tr> <td style="text-align: left;">p2p</td> <td style="text-align: left;">端对端相关代码,stun,turn</td> </tr> <tr> <td style="text-align: left;">rtc_base</td> <td style="text-align: left;">基础代码,如线程、锁相关的统一接口代码</td> </tr> <tr> <td style="text-align: left;">rtc_tool</td> <td style="text-align: left;">音视频分析相关的工具代码</td> </tr> <tr> <td style="text-align: left;">tool_webrtc</td> <td style="text-align: left;">WebRTC测试相关的工具代码,如网络模拟器</td> </tr> <tr> <td style="text-align: left;">system_wrappers</td> <td style="text-align: left;">与具体操作系统相关的代码。如CPU特性,原子操作等</td> </tr> <tr> <td style="text-align: left;">stats</td> <td style="text-align: left;">存放各种数据统计相关的类</td> </tr> <tr> <td style="text-align: left;">sdk</td> <td style="text-align: left;">存放Android和IOS层代码。如视频的采集,渲染等</td> </tr> </tbody> </table> <h3>补充说明</h3> <ul> <li> <p>call,一个端一个call,多个端多个call;</p> </li> <li> <p>module目录很大,也特别重要, 里边有很多子模块, 每个子模块也都非常重要;</p> </li> <li> <p>pc:【重要目录,上层的一个统一接口层】 Peer Connection,代表一个连接, 连接下边就要有很多相关API了, 如: Stream 流; chain 轨【音频轨、视频轨、桌面轨】 【轨 即 一系列永不相交的平行线(线程), 即音频与视频与桌面处理,都是各自处理,互不交叉的】;<br> 所以在Peer Connection中我们可以拿到流, 通过流我们可以拿到每一个多媒体, 还可以拿到所有媒体的统一信息、传输的统一信息等</p> </li> <li> <p>p2p: 端对端的传输时,需要先检查p2p是否能打通; 相应的协议、工具、API等,放在这里;</p> </li> <li> <p>rtc_base: 不同操作系统,如Window和Linux,之间的系统函数差别就特别大; 但是rtc_base都封装好了, 上层按照规范编写调用逻辑即可, 框架会判断是在哪个平台运行,并执行相应的代码;</p> </li> <li> <p>rtc_tool是音视频相关的测试; tool_webrtc是整个框架的测试;</p> </li> <li>system_wrappers, 存放操作系统等操作代码, 不同系统不同文件存放;</li> </ul> <hr /> <h1>- Modules 目录结构</h1> <table> <thead> <tr> <th style="text-align: left;">目录</th> <th style="text-align: left;">功能</th> </tr> </thead> <tbody> <tr> <td style="text-align: left;">audio_coding</td> <td style="text-align: left;">音频编解码相关代码</td> </tr> <tr> <td style="text-align: left;">audio_device</td> <td style="text-align: left;">音频采集与音频播放相关代码</td> </tr> <tr> <td style="text-align: left;">audio_mixer</td> <td style="text-align: left;">混音相关代码</td> </tr> <tr> <td style="text-align: left;">audio_processing</td> <td style="text-align: left;">音频前后处理的相关代码</td> </tr> <tr> <td style="text-align: left;">bitrate_controller</td> <td style="text-align: left;">码率控制相关代码</td> </tr> <tr> <td style="text-align: left;">congestion_controller</td> <td style="text-align: left;">流控相关的代码</td> </tr> <tr> <td style="text-align: left;">desktop_capture</td> <td style="text-align: left;">桌面采集相关的代码</td> </tr> <tr> <td style="text-align: left;">pacing</td> <td style="text-align: left;">码率探测及平滑处理相关的代码</td> </tr> <tr> <td style="text-align: left;">remote_bitrate_estimator</td> <td style="text-align: left;">远端码率估算相关的代码</td> </tr> <tr> <td style="text-align: left;">rtp_rtcp</td> <td style="text-align: left;">rtp/rtcp协议相关代码</td> </tr> <tr> <td style="text-align: left;">video_capture</td> <td style="text-align: left;">视频采集相关的代码</td> </tr> <tr> <td style="text-align: left;">video_coding</td> <td style="text-align: left;">视频编解码相关的代码</td> </tr> <tr> <td style="text-align: left;">video_processing</td> <td style="text-align: left;">视频前后处理相关的代码</td> </tr> </tbody> </table> <h3>补充说明</h3> <ul> <li> <p>audio_coding: 上面的WebRTC架构图中 提到的 ISAC/ILBC、VP8等编解码器逻辑, 都是放在这个目录下的;</p> </li> <li> <p>audio_device: 现在的WebRTC文件中关于Android、IOS的部分都放在sdk目录下了, 而之前的话, 所有的设备类型包括Android、IOS、Window、Mac、Linux的逻辑都是在audio_device目录下的; 现在的话Android、IOS被提取出去, 这里放的是关于Window、Mac、Linux的文件;</p> </li> <li> <p>audio_mixer: 混音的概念: 比如现在有几个用户同时在说话, 这样子会产生多个音频流, WebRTC则会把这几个音频流混合在一起, 这样子在传输的时候就比较方便, 减少了音频流总数; 那这个混音相关的逻辑文件,就放在audio_mixer这里;</p> </li> <li> <p>audio_processing: 音频前后处理:指回音消除、降噪、增益等处理操作;</p> </li> <li> <p>bitrate_controller:码率、码流控制;</p> </li> <li> <p>congestion_controller: 当我们检测到网络流量比较高的时候, 我们要做一些流量控制, 防止网络包把带宽打死; 相关处理逻辑 则 放在本文件夹下; 探测码率之后,对码率做一个均衡的平滑的处理,再发送交互;</p> </li> <li>deo_processing: 视频前后处理:指回音消除、降噪、增益等处理操作; 如增加人脸识别功能也可以放在这个目录下;</li> </ul> <hr /> <ul> <li>备注:无</li> </ul>

页面列表

ITEM_HTML