目录
简介
WebRTC(Web Real-Time Communication)是一种支持实时音视频通信的开放源代码项目,它允许网页浏览器和移动应用通过简单的API进行实时通信,无需安装插件或依赖特定操作系统。WebRTC的核心理念是让实时通信变得简单、可访问和无处不在。
对比其他框架,具有如下优势:
- 跨平台兼容性:WebRTC原生支持多种浏览器和操作系统,包括Chrome、Firefox、Safari等主流浏览器,以及Android和iOS等移动设备。
- 低延迟:WebRTC通过优化网络传输和编解码技术,实现了低延迟的音视频通信,提升了用户体验。
- 安全性:WebRTC使用DTLS/SRTP协议对数据进行加密和完整性保护,确保通信过程中的数据安全。
- 易于集成:WebRTC提供了一套简洁的API,开发者可以轻松地将其集成到网页或移动应用中,实现实时音视频通信功能。
WebRTC的一些应用场景:
- 视频聊天和会议:WebRTC广泛应用于视频聊天和会议应用,如Zoom、Skype等。通过WebRTC,用户可以随时随地与他人进行高清视频通话,共享屏幕和文档,提高沟通效率。
- 在线教育:WebRTC为在线教育平台提供了实时音视频通信的解决方案。教师可以通过WebRTC进行远程授课,与学生进行实时互动,提高教学效果。
- 远程医疗:在远程医疗领域,WebRTC可以帮助医生与患者实现远程视频诊疗和咨询。医生可以通过WebRTC实时查看患者的病情和体征,为患者提供及时的诊断和治疗建议。
- 实时游戏:WebRTC的低延迟和跨平台特性使其成为实时游戏开发的理想选择。游戏开发者可以利用WebRTC实现玩家之间的实时音视频通信和互动,提升游戏体验。
- 物联网应用:在物联网领域,WebRTC可以用于实现设备之间的实时音视频通信。例如,智能家居系统可以通过WebRTC实现不同设备之间的互联互通,方便用户远程控制和监控家庭设备。
WebRTC以其跨平台兼容性、低延迟、安全性和易于集成等优势,在多个领域得到了广泛应用。随着技术的不断发展,WebRTC有望在更多领域发挥更大的作用,推动实时通信技术的发展和创新。
WebRTC windows编译
最近在做一个WebRTC的项目,趟了不少坑,以此记录一下,希望能够帮得到大家。
工作准备:
1.一台能够上外网的电脑
2.visutal studio 2019或以上
第一个条件就卡住了不少人,有很多是通过代理来实现下载代码的,而我认为这样子过于麻烦,因为需要设置代理会比较麻烦,源代码的下载要很久,如果是在我个人的电脑,可能会影响到我的操作,所以我为了省事,直接买了一台香港的云服务器。
笔者用的是观星云(先说一下废话,我没有收他的任何广告费,当时首先想到的是阿里云,结果阿里云香港没有Windows服务器,然后百度到了这个云服务商)
配置:
CPU:4核心
内存:4GB
带宽:15Mbps
数据盘:80GB(其实应该30GB足够了,当时怕不够,所以买大了点)
操作系统:Windows-2016-Datacenter-cn(必须用这个系统,用2012的,visual studio2019会安装不上)
区域:中国香港CN2
visual studio 2019的安装时,要选择桌面C++开发功能以及MFC and ATL support。另外安装WIN10 SDK必须安装10.0.20348版本
------------------------------------------------以下是开始下载和编译---------------------------------------------------
1.https://storage.googleapis.com/chrome-infra/depot_tools.zip
点击链接下载depot_tools,并解压到D盘
2.在D盘创建webrtc文件夹,然后在D盘创建批处理文件webrtc.cmd,粘贴如下代码
@SETLOCAL
@CD /D "%~dp0\webrtc"
@SET "Path=%SystemRoot%\System32;%SystemRoot%;%SystemRoot%\System32\wbem"
@SET "Path=%Path%;%SystemRoot%\System32\WindowsPowerShell\v1.0"
@SET "Path=%~dp0.Aux;%~dp0.Aux\depot_tools;%Path%"
@SET "DEPOT_TOOLS_WIN_TOOLCHAIN=0"
@SET "DEPOT_TOOLS_UPDATE=0"
@SET "GYP_GENERATORS=msvs-ninja,ninja"
@SET "GYP_MSVS_OVERRIDE_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
@Cmd.Exe /K "CD /D ""%CD%"" & TITLE %~n0"
3.运行webrtc.cmd
输入如下代码
fetch --nohooks webrtc
gclient sync
开始下载代码。笔者因为买的带宽比较低,所以下载了16个小时左右。
把此目录的ninja.exe,拷贝到.Aux文件夹(因为cmd里面设置的环境变量是.Aux的目录,后面编译需要用到ninja.exe)
4.生成项目文件
gn gen out/Debug -ide=vs "--args=is_debug=true rtc_include_tests=false is_clang=false use_lld=false enable_iterator_debugging=true target_cpu=\"x86\""
参数说明:
参数 | 说明 |
-ide=vs | 生成visual studio sln文件 |
is_debug=true | 是否是debug,如果是release,则设为false |
rtc_include_tests=false | 是否生成测试用例 |
is_clang=false | 是否用clang编译(建议关闭,因为clang和visual studio不是特别兼容) |
use_lld=false | 是否使用lld链接(如果使用msvc,则此选项必须设置为false) |
enable_iterator_debugging=true | 和is_debug的配置一致,如果是release,则设置为false |
target_cpu=\"x86\"" | 如果编译为64位,则设置为x64 |
5.编译
ninja -C out/Debug
6.如果编译没问题的话,会在out/Debug/obj目录生成webrtc.lib
大家可以先收藏起来,后面会讲到如何利用msvc编译支持h264的版本(坑不少)