多媒体开发(19):webrtc的下载
多媒体开发(19):webrtc的下载
webrtc是什么?
先来看一下“百度百科”的解释:
WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购Global IP Solutions公司而获得的一项技术。2011年5月开放了工程的源代码,在行业内得到了广泛的支持和应用,成为下一代视频通话的标准。
再来看一下webrtc官方网页的解释,看下图:
但从这个官方解释,大体知道,webrtc是一个免费开放的,而且有优化的项目,可以应用于浏览器或手机程序,并且主要提供的是“实时通信”的能力。
这个“实时通信”有什么场景呢?我一下子能想到的,包括:实时语音聊天(电话会议)、视频会议、直播连麦(主播与粉丝互动),等等。
对于这些场景,都可以通过webrtc来实现。比如下面这个网页,基于webrtc,实现了“实时视频聊天”的功能:
所以,简单来说,webrtc,是一个程序,为了做到“实时通信”,它提供了网络传输的能力,还提供了音视频录制、编解码、声音或图像处理的能力(目的是获得更好的通信效果)。
既然webrtc是一个开源项目,那你自然就想到,看一下源码吧!
本文介绍webrtc源码的下载。 之所以介绍webrtc的下载,是因为下载webrtc源码,也有一点点难度。
小程介绍下载webrtc的两个办法。
第一个办法(并不是推荐的办法),是直接下载压缩包。可以到webrtc的某个项目地址或发布地址中,直接下载代码的压缩包。比如,可以点击 https://webrtc.googlesource.com/src
或者点击 https://chromium.googlesource.com/external/webrtc
然后,找到master分支,再下载最近一个提交对应的tag的压缩包。
可以参考以下截图的指引:
下载到压缩包后,解压,可以看到这样的文件结构:
这份文件的大小是65M左右:
以这种方式下载到的webrtc文件,只有核心源码(比如目录audio/video/modules/p2p/pc等等),并不包括android与ios平台的特有封装,也不包括依赖的第三库,也不包括编译的环境(编译脚本、工具、依赖库等),等等。
所以,相对于完整的webrtc项目,这份文件的体积小很多。
并且,如果用这种下载压缩包的方法,就不能使用git来管理代码,而且,更重要的是,不能在后续使用depot_tools的gn命令(以及ninja)来编译webrtc(gn使用时要求代码库带有checkout状态),而除了gn,似乎没有更好的编译办法。
所以,不推荐直接下载源码压缩包,除非你只是看核心源码就够了。
小程推荐的办法,是使用depot_tools来下载webrtc项目。
depot_tools是google用来管理代码仓库的工具包(包括诸多脚本),而在代码版本管理上,它依赖于svn或git。depot_tools不仅能控制代码版本,还可以编译项目。android系统源码也是用depot_tools来管理的。
首先要下载depot_tools。
在讲到depot_tools与后续的webrtc项目下载,“FQ”再次走入我们的视野。是的,下载depot_tools与webrtc,都需要你的网络环境是能“FQ”的,因为这两个东西的源地址,都还有“google”的字眼。如果你是通过网盘之类的下载,那就不在小程介绍的办法的范围内了。
开始下载depot_tools:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
或者不用git,直接下载depot_tools的压缩包也可以,比如根据上面的地址,下载depot_tools.git-master.tar.gz。
然后,为了在任何路径都能用执行到这个工具包中的脚本,在~/.bash_profile(bash时)或~/.zshrc(zsh时)中增加一个搜索路径:export PATH=”$PATH:xxx/depot_tools”
接着,找一个目录,准备下载webrtc项目。
请保证磁盘有足够的空间,因为webrtc完整项目的大小已经达到8.5G左右。
下载webrtc完整项目:
fetch –nohooks webrtc_ios
gclient sync
fetch命令是下载项目,gclient sync命令是同步最新的代码。
以上的fetch操作如果没有成功(可能因为网络原因),那可以用gclinet sync命令来同步最新的代码(可多次使用)。
下载webrtc源码的时间可能较长,但如果你有一个较好的网络环境,比如像小程的那样,那在一个上午的时间内也能解决战斗。
同步完最新的代码,可以看到这样的提示:
最近的提交记录:
完整webrtc项目的大小:
完整webrtc源码的目录结构,留意红框内的目录,是核心源码所没有的:
至此,webrtc完整项目的下载已经介绍完毕。
总结一下,本文介绍了如何通过depot_tools来下载webrtc的完整项目的操作,难点主要是网络环境的准备,至于depot_tools的下载与设置,以及depot_tools“下载”命令的使用,操作难度都很低。