「WebRTC」最新 WebRTC 源码目录结构分析
最近一直在研究 WebRTC源码,发现目前网上分析WebRTC源码的资料非常少。随着Google不断推进WebRTC标准,WebRTC 代码的变化非常大,很多以前的分析文章目前都与最新的代码无法对应上了。
所以,我想在分析WebRTC代码的过程中,将自己的一些分析心得写下来分享给大家,这样即是对自己的一种鞭策,同时也可以帮助那些想入门的同学。
当然,我写的分析文章不见得十分正确,如有不对的地方还请大家多多指正。
目录结构分析
api
WebRTC 接口层。包括 DataChannel, MediaStream, SDP相关的接口。各浏览器都是通过该接口层调用的 WebRTC。
call
存放的是 WebRTC “呼叫(Call)” 相关逻辑层的代码。
audio
存放音频网络逻辑层相关的代码。音频数据逻辑上的发送,接收等代码。
video
存放视频逻辑层及视频引擎层的相关的代码。视频数据逻辑上的发送,接收等代码。
视频引擎层就是指如何控制视频采集,处理和编解码操作的逻辑。
voice_engine
存放音频引擎代码。主要是控制音频的采集,处理,编解码的操作。
这个目录后面可能也会被拿掉。
sdk
存放了 Android 和 IOS 层代码。如视频的采集,渲染代码都在这里。
pc
存放一些业务逻辑层的代码。如 channel, session等。
common_audio
存放一些音频的基本算法。包括环形队列,博利叶算法,滤波器等。
common_video
存放了视频算法相关的常用工具,如libyuv, sps/pps分析器,I420缓冲器等。
modules
这个目录是 WebRTC 代码中最重要的一个目录。里面包括了音视频的采集,处理,编解码器,混音等。
视频的渲染部分已经从这里删除了。因为没有浏览器需要用到这里的渲染代码。如果使用Native API 做二次开发,需要自己写视频渲染相关的代码。
modules 目录下还包括以下几个子目录:
audio_coding : 音频编解码相关代码。
audio_conference_mixer : 会议混音相关代码。
audio_device : 音频采集与音频播放相关代码。
audio_mixer : 混音相关代码,这部分是后加的。
audio_processing : 音频前后处理的相关代码。
bitrate_controller : 码率控制相关代码。
congestion_controller : 流控相关的代码。
desktop_capture : 桌面采集相关的代码。
media_file : 播放媒体文件相关的代码。
pacing : 码率探测相关的代码。
remote_bitrate_estimator : 远端码率估算相关的代码。
rtp_rtcp : rtp/rtcp协议相关代码。
video_capture : 视频采集相关的代码。
video_coding : 视频编解码相关的代码。
video_processing : 视频前后处理相关的代码。
media
存放媒体相关的代码。
p2p
p2p相关的代码。
rtc_base
存放了一些基础代码。如线程,事件,socket等相关的代码。
rtc_tools
存放了一些工具代码。如视频帧比较,I420转RGB,视频帧分析。
stats
存放各种数据统计相关的类。
libjingle
网络库。
system_wrapper
与操作系统相关的代码,如 CPU特性,原子操作,读写锁,时钟等。
结束语
相关文章
- (尚056) Vue_源码分析_数据绑定与数据劫持介绍
- 一个由正则表达式引发的血案 vs2017使用rdlc实现批量打印 vs2017使用rdlc [asp.net core 源码分析] 01 - Session SignalR sql for xml path用法 MemCahe C# 操作Excel图形——绘制、读取、隐藏、删除图形 IOC,DIP,DI,IoC容器
- 使用react全家桶制作博客后台管理系统 网站PWA升级 移动端常见问题处理 循序渐进学.Net Core Web Api开发系列【4】:前端访问WebApi [Abp 源码分析]四、模块配置 [Abp 源码分析]三、依赖注入
- 大杂烩 -- ArrayList的动态增长 源码分析
- kubernetes垃圾回收器GarbageCollector 源码分析(三)
- 83 爬虫 - scrapy-redis源码分析(Connection)
- Storm-源码分析-Topology Submit-Nimbus-mk-assignments
- UCOSiii源码分析——os_task.c任务管理函数分析
- Laravel开发:Laravel框架门面Facade源码分析
- 最详细的Spring核心IOC的源码分析(每次看都有不同的感悟)
- FutureTask 源码分析
- java.io.BufferedInputStream 源码分析
- Android BLE 总结-源码篇(BluetoothLeAdvertiser)
- Android 高仿 频道管理----网易、今日头条、腾讯视频 (可以拖动的GridView)附源码DEMO
- Linux应用开发(十八)——U-Boot的启动过程源码分析
- SwiftUI iOS 组件之图片自定区间取值选择器RangeSlider支持颜色(教程含源码)
- SwiftUI 封装UIToolbar 教程含源码
- SwiftUI Widget小组件之如何让组件顶对齐 (教程含源码)
- AFNetworking源码分析
- Kubebuilder 详解与源码分析
- Zbar -- 源码分析
- Linux安装mysql——源码安装
- LNAMP服务器环境(源码安装)
- openlayers6结合geoserver实现地图空间查询(附源码下载)
- 【转】MaBatis学习---源码分析MyBatis缓存原理
- elasticSearch6源码分析(3)cluster模块
- lucene源码分析(4)Similarity相似度算法
- spring源码分析之spring-web http详解
- C# 源码
- V8源码分析之d8 shell 简介(第四篇)