1、前言
随着音视频技术的不断普及,Google推出的 WebRTC 越来越受到大家的喜欢。现在很多直播产品都是基于WebRTC 进行二次开发做出来的。 WebRTC是提供了一整套处理实时音视频的开源库。它包括了音视频处理(采集,编解码,前处理,后处理,渲染),数据传输(实时传输,流控)和业务逻辑控制。可以说 WebRTC 的出现大大减少了做音视频开发的难度,所以熟练掌握好这个库对于做音视频相关的同学就显的特别重要了。 要想掌握 WebRTC 要过的头一关就是如何编译它。WebRTC库非常庞大,光源码就有几个G,所以它对开发主机的性能,网络带宽的要求都非常高。另外,在Windows平台下,它对Windows的系统版本,Visual Studio 版本也都有明确的要求,所以只要其中某一项出问题了,都可能导致失败。这就是为什么很多人在编译WebRTC经常失败的原因。 下面我们言归正传,介绍一下在如何在 Windows下成功编译WebRTC. 2、主机及系统配置 第一、WebRTC要求是 64位机器 8G 内存,最好超过16G内存: 我实际的配置是 64位机器,4G内存,4核CPU也是没问题的。第二、至少 100G 磁盘空间,NTFS格式: FAT32格式是不能工作的,因为WebRTC中有的文件大于 4G。第三、Visual Studio 2015 Update 3 ,只能用这个版本的 VS 才能编译成功: VS 不需要是英文版本。第四、操作系统是 Windows7 或更新的 英文版本: 我使用的是 Win10 英文版,注意:Windows一定要是英文版哟。 3、安装虚拟机(可选) 由于环境的问题经常会导致编译失败,所以为了方便设置环境,我使用了VirtualBox虚拟机(该虚拟机是免费的)。相较于VMware它虽然性能稍差,但完全够我们编译开发WebRTC使用。所以我们也不必在虚拟机这个环节上纠结。安装虚拟机需要注意以下几点:
注意:由于 WebRTC 的代码量非常大,所以我一般都是在晚上让他去下载,第二天就可以用了。另外,下载代码时需要有VPN才可以。 7、编译及生成工程文件 执行下面的命令就可以编译WebRTC了:
编译成功后,执行下面的命令生成VS工程文件:
这时,我们就可以在 src\out\Default\ 目录下找到 all.sln 这个工程文件,到这里我们就大功告成了。 8、本文小结 我们上面详细介绍了编译WebRTC的步骤,由于WebRTC本身的原因,大家在操作时一定要仔细阅读每一步,否则都有可能导致编译失败。 另外,有一个关键点上面没有说明:就是获取 WebRTC 时需要 VPN 连接到 Google 才能下载代码,大家可以自己行找找有没有合适的 VPN。(原文链接:点此进入) 附录:更多实时音视频技术文章 [1] 开源实时音视频技术WebRTC的文章: 《开源实时音视频技术WebRTC的现状》 《简述开源实时音视频技术WebRTC的优缺点》 《访谈WebRTC标准之父:WebRTC的过去、现在和未来》 《良心分享:WebRTC 零基础开发者教程(中文)[附件下载]》 《WebRTC实时音视频技术的整体架构介绍》 《新手入门:到底什么是WebRTC服务器,以及它是如何联接通话的?》 《WebRTC实时音视频技术基础:基本架构和协议栈》 《浅谈开发实时视频直播平台的技术要点》 《[观点] WebRTC应该选择H.264视频编码的四大理由》 《基于开源WebRTC开发实时音视频靠谱吗?第3方SDK有哪些?》 《开源实时音视频技术WebRTC中RTP/RTCP数据传输协议的应用》 《简述实时音视频聊天中端到端加密(E2EE)的工作原理》 《实时通信RTC技术栈之:视频编解码》 《开源实时音视频技术WebRTC在Windows下的简明编译教程》 《网页端实时音视频技术WebRTC:看起来很美,但离生产应用还有多少坑要填?》 >> 更多同类文章 ……[2] 实时音视频开发的其它精华资料: 《专访微信视频技术负责人:微信实时视频聊天技术的演进》 《即时通讯音视频开发(一):视频编解码之理论概述》 《即时通讯音视频开发(二):视频编解码之数字视频介绍》 《即时通讯音视频开发(三):视频编解码之编码基础》 《即时通讯音视频开发(四):视频编解码之预测技术介绍》 《即时通讯音视频开发(五):认识主流视频编码技术H.264》 《即时通讯音视频开发(六):如何开始音频编解码技术的学习》 《即时通讯音视频开发(七):音频基础及编码原理入门》 《即时通讯音视频开发(八):常见的实时语音通讯编码标准》 《即时通讯音视频开发(九):实时语音通讯的回音及回音消除概述》 《即时通讯音视频开发(十):实时语音通讯的回音消除技术详解》 《即时通讯音视频开发(十一):实时语音通讯丢包补偿技术详解》 《即时通讯音视频开发(十二):多人实时音视频聊天架构探讨》 《即时通讯音视频开发(十三):实时视频编码H.264的特点与优势》 《即时通讯音视频开发(十四):实时音视频数据传输协议介绍》 《即时通讯音视频开发(十五):聊聊P2P与实时音视频的应用情况》 《即时通讯音视频开发(十六):移动端实时音视频开发的几个建议》 《即时通讯音视频开发(十七):视频编码H.264、VP8的前世今生》 《实时语音聊天中的音频处理与编码压缩技术简述》 《网易视频云技术分享:音频处理与压缩技术快速入门》 《学习RFC3550:RTP/RTCP实时传输协议基础知识》 《基于RTMP数据传输协议的实时流媒体技术研究(论文全文)》 《声网架构师谈实时音视频云的实现难点(视频采访)》 《浅谈开发实时视频直播平台的技术要点》 《还在靠“喂喂喂”测试实时语音通话质量?本文教你科学的评测方法!》 《实现延迟低于500毫秒的1080P实时音视频直播的实践分享》 《移动端实时视频直播技术实践:如何做到实时秒开、流畅不卡》 《如何用最简单的方法测试你的实时音视频方案》 《技术揭秘:支持百万级粉丝互动的Facebook实时视频直播》 《简述实时音视频聊天中端到端加密(E2EE)的工作原理》 《移动端实时音视频直播技术详解(一):开篇》 《移动端实时音视频直播技术详解(二):采集》 《移动端实时音视频直播技术详解(三):处理》 《移动端实时音视频直播技术详解(四):编码和封装》 《移动端实时音视频直播技术详解(五):推流和传输》 《移动端实时音视频直播技术详解(六):延迟优化》 《理论联系实际:实现一个简单地基于HTML5的实时视频直播》 《IM实时音视频聊天时的回声消除技术详解》 《浅谈实时音视频直播中直接影响用户体验的几项关键技术指标》 《如何优化传输机制来实现实时音视频的超低延迟?》 《首次披露:快手是如何做到百万观众同场看直播仍能秒开且不卡顿的?》 《Android直播入门实践:动手搭建一套简单的直播系统》 《网易云信实时视频直播在TCP数据传输层的一些优化思路》 《实时音视频聊天技术分享:面向不可靠网络的抗丢包编解码器》 >> 更多同类文章 ……
- 为了更好的利用硬件,需要确认你机子的BOIS中是否打开了虚拟化选项,这对虚拟机的性能会产生很大影响;
- 在虚拟机上安装完系统后,一定要安装虚拟的增强驱动,这样虚拟机要才能全屏显示。不会的可去问度娘。
- 选择安装:Visual C++, 并勾选它下面的三个子目录,这三个子目录中包括了 MFC;
- 选择安装:通用的Windows应用程序开发工具(Universal Windows Apps Development Tools):Tools (1.4.1) and Windows 10 SDK (10.0.14393)。
注意:必须将它放在PATH环境变量的开头。
然后,用同样的方法将 DEPOT_TOOLS_WIN_TOOLCHAIN 设置到你的系统环境变量里,并设置它的值为 0 ,该变量会告诉 depot_tools 使用你本地安装的 Visual Studio 版本。默认:depot_tools 使用 Google 内部版本。
最后:打开 cmd.exe, 运行 gclient 命令(不用带作何参数)。第一次运行时,gclient 将安装 Windows 下需要的工具, 包括 msysgit 和 python。gclient 执行完后,在命令行提示符下输入 python 将会显示 python.bat ,这就说明 depot_tools 安装好了。 6、获取 WebRTC 代码 执行下面的命令就可以获取 WebRTC 的代码了,也只有用这种方式,后面才能编译通过:
1
2
3
4
1.
mkdir
webrtc-checkout
2.
cd
webrtc-checkout
3. fetch --nohooks webrtc
4. gclient
sync
1
2
$
cd
src
$ gn gen out
/Default
1
$ gn gen --ide=vs out\Default