本文来自《WebRTC Native开发实战》书籍作者许建林在LiveVideoStack线上分享中的内容,详细分析总结 WebRTC 的视频数据流程,并对大型项目如何快速上手:分析方法,如何在工作中按需进行定制开发或调试分析问题等内容进行了深入解读 。
文 / 许建林
整理 / LiveVideoStack
直播回放:https://www.livevideostack.cn/video/online-piasy/
大家好,非常高兴能有机会和大家进行分享 。我叫许建林,英文名Piasy,目前在PowerInfo从事高稳定、低延迟的音视频实时传输技术的研发工作 。到目前为止已经有五年的工作经验,前两年主要是做视频直播的Android/ target=_blank class=infotextkey>安卓App开发,之后的三年在PowerInfo一直在做RTC SDK的开发 。我是一个开源爱好者,在GitHub也有发过许多的开源项目,非常欢迎大家关注一起交流 。
本次分享的主题是WebRTC视频流数据流程分析,主要内容可以分为以下几个部分:
- WebRTC 代码库简介
- 分析方法
- 视频流程介绍
- 实战:客户端视频录制
WebRTC 代码库简介
1.1 WebRTC简单介绍
文章插图
关于什么是WebRTC,如何用一两句话简单说明?
WebRTC是一个Web端 RTC的互联网标准,同时我们也会用WebRTC来指代一个开源项目,是目前完成度最高、最流行的RTC框架,是由google开源的项目 。
1.2 WebRTC版本说明
文章插图
上图展示的是Chromium项目网站上公开的版本发布规划表,图中Milestone 81是Milestone的编号,简写为M81 。表中其它列如Chromium、Skia以及WebRTC等都是其对应的版本分支,例如Skia有同名的m81分支,之前WebRTC也是有同名的m75、m76分支,只不过后来改变了分支的命名方式 。
文章插图
在《WebRTC Native开发实战》中有提到过书中对于WebRTC的代码分析是基于某次提交版本,例如“#30432提交” 。如图所示为WebRTC的Git提交记录图,蓝色箭头所指位置:Cr-Commit-Position:refs/head/master@{#30432},“#30432”的含义是指该项目从开始到现在第几次提交 。WebRTC的代码库有一个特点,其主干分支是一条直线,无其它分支(当然在发布新版本时,会开出发布分支,可能会同步一些需要带上去的提交,但是这个分支上的提交都不会再合并回来),这也就使得WebRTC的版本历史非常清晰,开发者在查询提交记录或变更历史时会非常简单方便 。
文章插图
上图是我在之前参与过的一个项目中截取的,是在Sourcetree中截取的 。我们可以看到其分支非常复杂,但其实这是遵循GitFlow的版本控制模式运行所导致的结果,Gitflow被很多人诟病的地方就是提交的版本记录分支结构非常复杂,难以追溯历史 。
【WebRTC视频数据流程分析】
1.3 WebRTC代码目录
文章插图
图为macOS中WebRTC IOS的代码库目录
首先是“api”,主要是C++代码的公开api,开发者在使用C++开发时就会用到其预先定义的接口程序,例如pPear_cConnection类 。同时,在安卓或iOS上使用JAVA或者ObjectiveC接口的话,其实也都是对C++接口的bouninding 。
“call、pc、media”:这三个目录在我理解,是WebRTC主要流程和业务逻辑的实现代码 。
“audio、common_aduio、video、common_video”:这四个目录主要是音频和视频类相关的代码 。
“modules”:很多公司可能不会直接使用整个WebRTC的代码库,而只是使用其中的一些常用模块,这些模块大都包含在“modules”中,例如回声抑制、噪音抑制等处理,视频编码、Jitterbuffer等 。
“p2p”:与p2p连接相关的代码 。
“sdk”:Android和iOS平台相关的代码,如视频采集、预览、渲染、编解码等需要调用系统接口的代码,对C++接口的bouninding 。
“rtc_base”:Chromium项目中一些公用的基础代码,例如线程、锁相关代码 。
“third_party”:包含许多Google的其它开源项目以及非Google开源的项目,被WebRTC用到的都放在third_party中,例如FFmpeg、libvpx等 。
推荐阅读
- 怎么用vlookup对两个表匹配相同数据?
- 数据库:innodb数据组织形式
- KETTLE 使用教程
- 视频怎么剪辑合成?值得收藏使用
- 剪辑视频尺寸操作图文分享
- 三层架构下,优酷视频搜索测试体系很复杂吗?
- Windows安装MariaDB-10.5.5数据库
- 小白必备 头条创作23天,头条收益以及各种数据参考老司机忽略
- 有哪些视频制作工具?免费视频剪辑软件排行
- 剪辑视频的软件有哪些?选它免费制作视频