WebRTC是一种新兴的技术,也被称为RTCWEB是一项在浏览器内部进行实时和音频通信的技术。WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,支持跨平台:Windows,Linux,MAC,Android。
WebRTC堪称近年来最大的一次技术革新,加入了很多交互特性,为网络带了很多革命性的新“天赋”,而这些“天赋”使网络世界向前迈一大步。
当开发者希望使用音频或者视频通话时,可以直接使用已有的代码,唯一需要做的只需在移动设备上创建一个独立的程序。该标准提出后,许多传统的VoIP服务供应商将逐渐衰落和死亡。传统的固定销售(电话销售)以及传统的语音设备将被淘汰,电话网络的形式已一去不复还了。这对于移动运营商来说将面临一种新的挑战。
WebRTC的开放标准使浏览器间直通很容易在互联网架构中实现。你可以想象不管我们用什么或者在哪里都可以通过音频进行交流,而且它们都是免费的。从苹果到三星,从商务手机到TV,无论你是在家还是在车里亦或者在夏威夷,这些就是WebRTC带给我们的好处。
看两大巨头如何拥抱WebRTC?
谈及移动领域,谷歌和苹果公司也积极拥抱了这门技术。如果两个巨头同时推动WebRTC,并说服移动运营商参与进来,那么消费者将会非常受益。
WebRTC给谷歌带来了丰厚的利润,比如Google Hangouts拥有数百万的用户进行群聊,管理终端用户软件部署存在许多复杂性,如果要减少或者消除终端用户软件,WebRTC是一个非常不错的方法。
这对于设备制造商来说有利而无害,由于谷歌在WebRTC方面是主要的推动者且拥有Android系统,可以推测,未来Android设备将会推出免费的音频/视频服务。基于WebRTC开放标准这些设备可以相互间进行操作。这将有助于Google手机以及平板电脑的销售。
苹果对于WebRTC的支持似乎相对要平静些。倘若没有苹果公司的支持,大约一半移动市场是不可访问的。这也就意味着如果开发者依赖WebRTC来开发音频或者视频,在Android和iOS两大平台上建立本地应用,他们也只有一半的用户可以使用此功能。这无疑对WebRTC社区是个重大的打击。
但话又说回来,苹果可以随时将这项技术投放到iOS系统中。相信不久的将来,苹果会采取此动作。
web RTC 官网
1、WebRTC目的
2、WebRTC架构图
3、WebRTC架构组件介绍
4、WebRTC核心模块API
(1)、网络传输模块:libjingle
(2)、音频、视频图像处理的主要数据结构
类、结构体、枚举常量 | 头文件 | 说明 |
Structures | common_types.h | Lists the structures common to the VoiceEngine & VideoEngine |
Enumerators | common_types.h | List the enumerators common to the VoiceEngine & VideoEngine |
Classes | common_types.h | List the classes common to VoiceEngine & VideoEngine |
class VoiceEngine | voe_base.h | How to allocate and release resources for the VoiceEngine using factory methods in the VoiceEngine class. It also lists the APIs which are required to enable file tracing and/or traces as callback messages |
class VideoEngine | vie_base.h | How to allocate and release resources for the VideoEngine using factory methods in the VideoEngine class. It also lists the APIs which are required to enable file tracing and/or traces as callback messages |
(3)、音频引擎(VoiceEngine)模块 APIs
sub-API | 头文件 | 说明 |
VoEAudioProcessing | voe_audio_processing.h | Adds support for Noise Suppression (NS), Automatic Gain Control (AGC) and Echo Control (EC). Receiving side VAD is also included. |
VoEBase | voe_base.h | Enables full duplex VoIP using G.711.NOTE: This API must always be created. |
VoECallReport | voe_call_report.h | Adds support for call reports which contains number of dead-or-alive detections, RTT measurements, and Echo metrics. |
VoECodec | voe_codec.h | Adds non-default codecs (e.g. iLBC, iSAC, G.722 etc.), Voice Activity Detection (VAD) support. |
VoEDTMF | voe_dtmf.h | Adds telephone event transmission, DTMF tone generation and telephone event detection. (Telephone events include DTMF.) |
VoEEncryption | voe_encryption.h | Adds external encryption/decryption support. |
VoEErrors | voe_errors.h | Error Codes for the VoiceEngine |
VoEExternalMedia | voe_external_media.h | Adds support for external media processing and enables utilization of an external audio resource. |
VoEFile | voe_file.h | Adds file playback, file recording and file conversion functions. |
VoEHardware | voe_hardware.h | Adds sound device handling, CPU load monitoring and device information functions. |
VoENetEqStats | voe_neteq_stats.h | Adds buffer statistics functions. |
VoENetwork | voe_network.h | Adds external transport, port and address filtering, Windows QoS support and packet timeout notifications. |
VoERTP_RTCP | voe_rtp_rtcp.h | Adds support for RTCP sender reports, SSRC handling, RTP/RTCP statistics, Forward Error Correction (FEC), RTCP APP, RTP capturing and RTP keepalive. |
VoEVideoSync | voe_video_sync.h | Adds RTP header modification support, playout-delay tuning and monitoring. |
VoEVolumeControl | voe_volume_control.h | Adds speaker volume controls, microphone volume controls, mute support, and additional stereo scaling methods. |
(4)、视频引擎(VideoEngine)模块 APIs
sub-API | 头文件 | 说明 |
ViEBase | vie_base.h | Basic functionality for creating a VideoEngine instance, channels and VoiceEngine interaction. NOTE: This API must always be created. |
ViECapture | vie_capture.h | Adds support for capture device allocation as well as capture device capabilities. |
ViECodec | vie_codec.h | Adds non-default codecs, codec settings and packet loss functionality. |
ViEEncryption | vie_encryption.h | Adds external encryption/decryption support. |
ViEErrors | vie_errors.h | Error codes for the VideoEngine |
ViEExternalCodec | vie_external_codec.h | Adds support for using external codecs. |
ViEFile | vie_file.h | Adds support for file recording, file playout, background images and snapshot. |
ViEImageProcess | vie_image_process.h | Adds effect filters, deflickering, denoising and color enhancement. |
ViENetwork | vie_network.h | Adds send and receive functionality, external transport, port and address filtering, Windows QoS support, packet timeout notification and changes to network settings. |
ViERender | vie_render.h | Adds rendering functionality. |
ViERTP_RTCP | vie_rtp_rtcp.h | Adds support for RTCP reports, SSRS handling RTP/RTCP statistics, NACK/FEC, keep-alive functionality and key frame request methods. |
G
- ,用于获得 WebM 等。
- ,这是 Google 在 Chromium 中就开始使用的分发工具。直接下载 并解压即可。注意加入系统环境变量 PATH(gclient 所在路径)。
- Windows 下我们还要下载、安装 Visual Studio 2005(用 VS2010 也是 OK 的)、 (注意要确认安装 Sample)和 。
gclient config https://webrtc.googlecode.com/svn/trunk gclient sync --force其中“sync”命令还能创建开发环境(Linux:make, OSX: XCode, Windows: Visual Studio),如我们这里最关心的是 MS Visual Studio 的解决方案(trunk/webrtc.sln)。我们也可以手工通过下面的命令手工生成开发环境:
gclient runhooks --force如果需要指定 MS Visual Studio 的版本,请在“gclient”前先如下调用:
set GYP_MSVS_VERSION=2005 set GYP_MSVS_VERSION=2008源码拿到了,MS Visual Studio 的解决方案也有了,直接用 Visual Studio 打开即可,编译的时候可能会有些小问题,应该都是目录相关的,按照自己的环境重新设定一下即可。如我这里按照下面所指改动有问题的工程即可,工具 - 选项 - 项目和解决方案 - VC++ 目录:
可执行文件: C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin 包含文件: C:\Program Files\Microsoft SDKs\Windows\v7.1\Include C:\Program Files\Microsoft DirectX SDK (August 2009)\Include 库文件: C:\Program Files\Microsoft SDKs\Windows\v7.1\Lib C:\Program Files\Microsoft DirectX SDK (August 2009)\Lib\x86 ...生成文件位于“\trunk\Debug”下,如“peerconnection_server.exe 和 peerconnection_client.exe”,运行效果如下截图:
google开源了WebRTC项目,网址是:。
WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。通过对源码的粗略分析,WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台: windows,,mac,。