专栏首页音视频直播技术专家「WebRTC」最新 WebRTC 源码目录结构分析

「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特性,原子操作,读写锁,时钟等。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mac上使用 gdb 调试程序

    最新版本的 Mac 默认只能使用 lldb 进行程序调试,但对于习惯使用 gdb的人来说还是希望在Mac下使用gdb调试程序才感得更爽。

    音视频_李超
  • LaTeX的基本使用

    在 Mac 下安装 LaTex 非常方便,执行 brew cast install mactex 即可。当mactex安装好后,在你的 Mac 的 App 中会...

    音视频_李超
  • git 常用命令

    有些情况下,通过 git status 能查到某些文件有变化,但使用 git diff 却看不到修改的内容。可以使用下面的面试查看变化。

    音视频_李超
  • 改掉这14种习惯,初级程序员分分钟进阶高级程序员

    很多人也会有这种疑惑,尤其是入行好几年了还是个底层人员的小伙伴,今天就告诉你,你如何晋级为高级程序员。同时也反思下自己还有哪些不足。

    学神IT
  • 有了这个神器,贴代码请大佬调试的时候再也不怕被骂这是什么鬼玩意儿啦!

    作为一个不知名的号主,承蒙大家不嫌弃,经常性的会有人非常客气的把一堆代码扔到我的脸上,这些代码千奇百怪,姿态各异,让我喜笑颜开...

    Rocky0429
  • Xcode创建可复用的代码块 原

            在各种程序开发中,编写代码的效率是非常重要的一个问题,各种优秀的编译器也都有相应的插件用于提高程序员的编码速度。在xcode中,可以通过定义代码...

    珲少
  • 我在编程20年中学到的5件事 - DaedTech

    物流IT圈
  • 9个,程序员又爱又恨的编程习惯

    编程习惯No. 1:使用goto 关于禁止使用goto可以追溯到许多结构化编程工具还未面世的时代。如果程序员想要创建一个循环或跳到另一段程序中,那么他们需要输入...

    BestSDK
  • 有哪些新手程序员不知道的小技巧?

    2. 不要写代码前过度计划,在一头钻进代码前做点计划是好事,但是即便是好事,也可能物极必反。喝太多的水都会使你中毒呢;

    lyb-geek
  • GitHub遭攻击!黑客给出十天限期:不交比特币赎金,就公开用户私有代码

    就在五一假期的最后一天,一些程序员查看自己托管到GitHub上的代码时发现,他们的源代码和Repo都已消失不见,取而代之的是黑客留下的一封勒索信!

    JAVA葵花宝典

扫码关注云+社区

领取腾讯云代金券