WebRtc总结
什么是WebRtc
官方首页简介原文
WebRTC is a free, open project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose.
Our mission: To enable rich, high-quality RTC applications to be developed for the browser, mobile platforms, and IoT devices, and allow them all to communicate via a common set of protocols.
The WebRTC initiative is a project supported by Google, Mozilla and Opera, amongst others. This page is maintained by the Google Chrome team.
简单来说,WebRTC是一个免费的、开源的,用于实现浏览器以及移动设备实时通讯项目。它可以实现实时的高质量的流畅的音视频通话。
ps:多数应用在于web端,因为毕竟叫 web-rtc
WebRTC能实现哪些功能
- 实现点对点的连接,在连接基础上,可以发送文件,进行音视频通讯等。
- 可以进行多人的语音视频通讯,在不使用服务器的情况下,多人通讯大约为4-5人上限。
WebRTC体验
体验方式可以是webrtc官方的demo,也可以是自己动手编译源码搭建环境。
官方demo线上体验
官方地址连接AppRTC 官方地址输入一个房间号,然后邀请伙伴加入,就可以进行webrtc视频通讯了
自己动手搭建AppRTC环境
具体步骤详见后文
编译native源码体验
具体步骤详见后文
WebRTC基本原理
其主要是通过配p2p方式,建立对等连接实现通讯。其基本组成包括信令服务器,穿透打洞服务器(局域网可省略),以及相关的客户端。
带有打洞服务器的应用架构图
基本的通讯过程
图片来自于国外友人
相关服务器
信令服务器
信令服务器主要用于客户端之间相互交换信令,以及穿透打洞的相关信息。信令服务器在webrtc中并没有具体的实现规范与要求,大家可以根据实际的业务需求,以及能力用自己喜欢的语言,喜欢的方式实现信令服务器。
任何具有实时通讯消息能力的方式,都也是实现信令服务器,例如xmpp,websocket,soket.io等等。
穿透服务器
webrtc采用端到端的连接,无法通过NAT与防火墙的限制而直接连通。当不在同一局域网中时,就要用到穿透服务器。在Webrtc中为ICE服务。通常情况下可以使用STUN服务器或TURN服务器。现在项目上使用的是Coturn开源服务器,能同时提供STUN与TURN两种服务。
google apprtc搭建。
google的demo源码搭建需要翻墙,其中包括 房间服务器、信令服务器、穿透服务器、nginx服务器配置。房间服务器相当于一个具体的客户端实现。具体搭建方法,参考博客基于Ubuntu16.04(64位)搭建WebRTC服务器
官方源码下载以及编译。
native源码下载及编辑
Android源码
iOS
webrtc codelabs 相当于一个简单的web端教程
Android端
几经google与百度,找到一个靠谱的外国友人的教程Getting Started with WebRTC for Android 详细描述了如何一步一步的构建android端的webrtc应用。由于api升级,示例代码中,一小部分api已经变化了,需要注意。
关于webrtc媒体服务器。
目前有两种形式,MCU与SFU。常见的有 Kurento媒体服务器、Jitsi平台、licode等