前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >「WebRTC」最新 WebRTC 源码目录结构分析

「WebRTC」最新 WebRTC 源码目录结构分析

作者头像
音视频_李超
发布于 2020-04-02 10:52:38
发布于 2020-04-02 10:52:38
4.3K0
举报

前言

最近一直在研究 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特性,原子操作,读写锁,时钟等。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
WebRTC | 原理、架构、框架目录、运行机制、核心类、PeerConnection调用过程等详解
架构 整理分为两层: 应用层、核心层 绿色部分是核心部分, 是WebRTC提供的核心功能; 紫色部分是浏览器提供的JS的API层; 即 浏览器对WebRTC核心层的C++ API 做了一层封装
凌川江雪
2020/08/11
5.5K0
WebRTC | 原理、架构、框架目录、运行机制、核心类、PeerConnection调用过程等详解
C/C++开发人员要了解的几大著名C/C++开源库[通俗易懂]
在开源软件盛行的今天,很多知名的C++国产软件都用到了一些大型C/C++开源库,比如暴风音影使用了多媒体处理开源库FFmpeg、腾讯会议使用了实时音视频处理开源库Webrtc、PC版微信使用了Chromium嵌入式框架开源库CEF等。今天我们就来介绍一下日常工作中常用的C/C++开源库,给大家提供一个借鉴和参考。
全栈程序员站长
2022/11/15
3.6K0
C/C++开发人员要了解的几大著名C/C++开源库[通俗易懂]
WebRTC简介及使用
WebRTC 只是一个媒体引擎,上面有一个 JavaScript API,所以每个人都知道如何使用它(尽管浏览器实现仍然各不相同),本文对 WebRTC(网页实时通信)的相关内容进行简要介绍。
Gnep@97
2023/11/12
1.8K0
WebRTC简介及使用
WebRTC架构图说明
网上也有很多资料说这张图在webRTC的官网上,但是很多童鞋根本就找不到。这是因为很多童鞋没有进行访问国外网站:WebRTC架构说明英文文档:https://webrtc.github.io/webrtc-org/architecture/
音视频开发进阶
2020/09/04
6.2K0
WebRTC架构图说明
WebRTC视频数据流程分析
直播回放:https://www.livevideostack.cn/video/online-piasy/
LiveVideoStack
2020/09/14
3K0
视频直播技术干货(十三):B站实时视频直播技术实践和音视频知识入门
直播行业从传统的娱乐直播发展到教育直播、电商直播等形式,产生了很多新的玩法。传统的直播是一位主播展示才艺,观众通过弹幕、送礼物等方式进行互动。随着网络质量不断地提高,用户也对直播平台产生的新的要求,实时互动直播的场景就出现了,观众可以同时观看多位主播之间互动的画面,让直播间的气氛更好。B站直播的连麦PK、视频连线业务就提供了这个能力。主播看到的是对方主播实时的流(延迟400ms以内),而观众看到的是“准实时”的流(延迟2~5s左右)。
JackJiang
2025/03/06
1000
视频直播技术干货(十三):B站实时视频直播技术实践和音视频知识入门
如何优化WebRTC提升直播体验?
大家好,我是来自全民快乐科技有限公司的郭奕,接下来我将从一个工程师的角度为大家分享如何更好地利用WebRTC为应用赋能。本次分享将以“给音视频实时通讯应用打分“为线索,与大家一起探索如何提升以直播连麦、传统音视频会议等为主要应用场景的实时互动音视频通讯用户体验。
LiveVideoStack
2021/09/01
1.3K0
WebRTC系列分享 | WebRTC视频QoS全局技术栈
导语 | WebRTC真是一套让人既爱又恨的开源代码。一方面,WebRTC里面有一套很完善很系统的QoS策略。但另一方面,WebRTC代码庞大且版本更新迭代特别快,代码的阅读和学习难度很大。为了方便大家学习了解,我们在这里对WebRTC的QoS思想及算法实现做了一些梳理总结,以系列分享的方式呈现给大家,供大家参考。 概述 目前总结出WebRTC用于提升QoS的方法有:NACK、FEC、SVC、JitterBuffer、IDR Request、Pacer、Sender Side BWE、Probe、VFR(
腾讯云音视频
2022/03/15
2.7K0
写给小白的实时音视频技术入门提纲
这是由一篇我的演讲稿整理出来的文章,目标读者是对实时音视频开发感兴趣但是又不知道如何下手的初学者们,希望把我的经验分享出来,对大家有所帮助。
JackJiang
2018/08/29
5.4K0
融云技术分享:基于WebRTC的实时音视频首帧显示时间优化实践
本文由融云技术团队原创投稿,作者是融云WebRTC高级工程师苏道,转载请注明出处。
JackJiang
2020/09/28
1.3K0
【项目实战】基于 WebRTC 的音视频在线监考模块的设计与实现(上)
最近在做关于考试系统的项目,其中有一项需求分析是要做在线监考模块,因为之前没有做过这方面的东西,还是比较迷茫的,在查阅了大量的资料之后,再结合系统是以 H5 的形式展示的,最后选用了 WebRTC 框架为主体来实现这一模块,本文会介绍其基本理论;  
sidiot
2023/08/31
4670
【项目实战】基于 WebRTC 的音视频在线监考模块的设计与实现(上)
WebRTC技术概览
WebRTC(Web Real-Time Communication)是基于标准化技术的行业性项目,
呱牛笔记
2023/05/02
1.4K0
WebRTC技术概览
实时视频直播客户端技术盘点:Native、HTML5、WebRTC、微信小程序
2017 年 12 月,微信小程序向开发者开放了实时音视频能力,给业内带来广阔的想象空间。连麦互动视频直播技术在 2016 年直播风口中成为视频直播的标配,然而只有在原生的 APP 上才能保障良好的用户体验。
JackJiang
2018/08/29
7.5K0
音视频开发入门_视频制作基础知识
音视频涉及语音信号处理、数字图像处理、信息论、封装格式、编解码、流媒体协议、网络传输、渲染、算法等。在现实生活中,音视频扮演着越来越重要的角色,比如视频会议、直播、短视频、播放器、语音聊天等。因此,从事音视频是一件比较有意义的事情,机遇与挑战并存。本文将从几个维度进行介绍:音视频开发基础、音视频进阶成长、音视频工作方向、音视频开源库、流媒体协议与书籍。
全栈程序员站长
2022/10/02
3K0
音视频开发入门_视频制作基础知识
网易工业级WebRTC应用实践深度解析
网易在音视频领域有10多年丰富经验的积累,在公司内部我们把自己的这一套工业级的功能完整的音视频技术方案称为NRTC,NRTC的意思就是NetEase RTC。近几年,WebRTC非常火热,尤其是2017年,苹果宣布在Safari 11里面支持WebRTC,所以说Web本身也变成了一个非常重要的入口,是音视频很重要的一个终端,对于我们来说,要在我们的NRTC里面实现对WebRTC的支持,也就是要能够支持Web这样一个终端和入口。
LiveVideoStack
2021/09/01
9530
视频技术快览 0x3 - 视频封装与播放
FLV 是一种非常常见的音视频封装,尤其是在流媒体场景中经常用到。FLV 封装也是比较简单的封装格式,它是由一个个 Tag 组成的。Tag 又分为 视频 Tag、音频 Tag 和 Script Tag,分别用来存放视频数据、音频数据和 MetaData 数据。
Cellinlab
2023/05/17
4230
视频技术快览 0x3 - 视频封装与播放
视频直播技术干货(十一):超低延时视频直播技术的演进之路
新媒体互动直播已成为了广大网民最重要的休闲娱乐方式之一。丰富的传统文化、新闻、竞技体育、法律、知识共享等内容,通过移动端互动直播的形式得以更加高效的展现传播,既让优质的直播内容可以实现爆发式传播扩散,又可以让用户有更多的机会感受,学习甚至主动参与直播互动。超低延时视频直播技术正在走上一条全新的发展之路。
JackJiang
2024/01/04
9660
视频直播技术干货(十一):超低延时视频直播技术的演进之路
WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba
WebRTC 无疑推动和改变了互联网视频,而这仅仅是刚刚开始,除了大家熟悉的 WebRTC-PC、Simulcast 和 SVC,有太多的新技术和新架构出现在 WebRTC 新的标准中,比如 WebTransport、WebCodecs、AV1、E2EE、SFrame、ML 等等,这篇文章详细介绍了未来的 WebRTC-NV,不容错过。
音视频开发进阶
2021/02/24
1K0
WebRTC 的现状和未来:专访 W3C WebRTC Chair Bernard Aboba
Web前端WebRTC攻略(一) 基础介绍
随着互联网高速发展,以及即将到来的5G时代,WebRTC作为前端互动直播和实时音视频的利器,也是将前端开发者们不可错过的学习领域。如果你现在只是听过而已,那你可能要好好学习一番。 01  什么是WebRTC? WebRTC 全称是(Web browsers with Real-Time Communications (RTC) 大概2011年,谷歌收购了 GIPS,它是一个为 RTC 开发出许多组件的公司,例如编解码和回声消除技术。Google 开源了 GIPS 开发的技术,并希望将其打造为行业标准。 收
用户1097444
2022/06/29
2.5K0
Web前端WebRTC攻略(一) 基础介绍
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
从游戏、教育、电商到娱乐,直播技术的应用场景无处不在。随着移动端的网速越来越快,直播技术的普及和发展将更加迅速。
JackJiang
2024/10/17
1780
视频直播技术干货(十二):从入门到放弃,快速学习Android端直播技术
推荐阅读
相关推荐
WebRTC | 原理、架构、框架目录、运行机制、核心类、PeerConnection调用过程等详解
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文