Install
1) Requirements
In order to compile TurnServer, you need the followings packages :
- autoconf
- automake
- make
- gcc
- libssl-dev
- libconfuse-dev
- check
- doxygen
- pkg-config
1) Requirements
In order to compile TurnServer, you need the followings packages :
本人最早接触WebRTC是在2011年底,
那时Google已经在Android源码中加入了webrtc源码,放在/external/webrtc/,
但是Android并没有用到它,更没有被浏览器使用。
当时试图在Android 2.3(Gingerbread)高通平台的手机上
用H.264 硬件codec替换掉WebRTC缺省使用的VP8软codec,费了不少劲勉强换掉后效果很差只得放弃。
最近得知Google最新版的Chrome for Android已经支持WebRTC,
应老板的要求搭一个手机浏览器上视频通信的demo,
为此在网上搜集各种资料,发现经过一年多的发展,
国内外研究和使用WebRTC的人明显多起来,可用的demo也很多。
在此做一个笔记,留作日后参考。
目前基于WebRTC的开发其实有两个方向,
一个是基于浏览器的WebRTC应用开发,编程语言主要是JavaScript、HTML等,
这也是WebRTC作为HTML5标准的组成部分原本的目的;
前段时间上手了NAT打洞类库ice4j(ICE框架),当时使用了numb.viagenie.ca的公共STUN服务器。最近又编译了rfc5766-turn-server,于是今天将两者结合起来,一个作为服务端,一个作为Peer端的协议,试验广域网穿透多级路由即时点对点通讯,并取得了成功。
rfc5766-turn-server是谷歌推荐的turn开源项目,经常作WebRTC的服务器端使用。关于rfc5766-turn-server在Windows或Ubuntu(Linux)下的编译,请参考 http://www.hankcs.com/program/network/compile-rfc5766-turn-server-to-build-turn-server.html 。这里假定你已经编译完成,输入
得到如下结果说明编译成功:
对于实时通讯来说WebRTC技术是一个革命性的存在,主要基于WebRTC开启软MCU的零客户端新时代,例如谷歌、英特尔、华为、微软、阿里、甲骨文、腾讯、奥科等国际巨头,投入都纷纷布局5G时代下的视频通信市场,本篇帖子,重点介绍英特尔在WebRTC方面的研发成果。
多人音视频架构:
WebRTC 实现了多个 Web API 接口,其中三个重要的 Web API 分别是:
这里大致介绍一下这三个 API:
MediaStream API 为 WebRTC 提供了从设备的摄像头、话筒获取视频、音频流数据的功能.
众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转。比如现在有两个客户端,甲和乙,他们俩想要通信,首先需要甲和服务器、乙和服务器之间建立信道。甲给乙发送消息时,甲先将消息发送到服务器上,服务器对甲的消息进行中转,发送到乙处,反过来也是一样。这样甲与乙之间的一次消息要通过两段信道,通信的效率同时受制于这两段信道的带宽。同时这样的信道并不适合数据流的传输,如何建立浏览器之间的点对点传输,一直困扰着开发者。WebRTC 应运而生。
WebRTC,名称源自网页实时通信(Web Real-Time Communication)的缩写,是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输,支持网页浏览器进行实时语音对话或视频对话。WebRTC 包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。它是谷歌 2010 年 5 月以 6820 万美元收购拥有编解码、回声消除等技术的 Global IP Solutions 公司而获得的一项技术。该项目是由 GIPS 项目和 libjingle 项目融合而成。其中 GIPS 部分主要提供媒体的处理的功能。libjingle 项目部分主要提供 P2P 传输部分的功能。2011 年 5 月开放了工程的源代码,与相关机构 IETF 和 W3C 制定行业标准,组成了现有的 WebRTC 项目,在行业内得到了广泛的支持和应用,成为下一代视频通话的标准。