Web实现音频、视频通信

Google开源实时通信项目WebRTC

Google正式开源了WebRTC实时通信项目,希望浏览器厂商能够将该技术内建在浏览器中,从而使Web应用开发人员能够通过HTML标签和JavaScript API就实现Web音频、视频通信功能。

WebRTC(Web Real Time Communication)并不是Google原来自己的技术。在2010年,Google以大约6820万美元收购了VoIP软件开发商Global IP Solutions公司,并因此获得了该公司拥有的WebRTC技术。如今,互联网的音频、视频通信服务技术一般都是私有技术,如Skype, 需要通过安装插件或者桌面客户端来实现通信功能。Google希望Web开发人员能够直接在浏览器中创建视频或语音聊天应用,Global IP Solutions公司之前已经针对Android、Windows Mobile、iPhone制作了基于WebRTC的移动客户端。Google此次将WebRTC开源出来,就是希望浏览器厂商能够将该技术直接内嵌到浏 览器中,从而方便Web开发人员。

WebRTC的博客说明了WebRTC的优势和发展方向:

直到现在,实时通信仍然需要私有的信号处理技术,大部分都是通过插件和客户端来安装使用。我们通过WebRTC开源了收购GIPS后获得的音频、视频引擎技术,让开发人员能够了解信号处理技术,并使用了BSD风格的授权。这会支持开发人员通过简单的HTML和JavaScript API创建音频和视频聊天应用。

我们正在与其他浏览器开发厂商Mozilla和Opera等紧密合作,尽快在浏览器中实现这项技术以便于Web社区使用。此外,我们还积极地参与IETF和W3C工作组的活动,定义和实现一套实时通信标准。

官网上列表了使用WebRTC技术的四个理由:

  1. 互联网成功的一个关键因素是一些核心技术如HTML、HTTP和TCP/IP是开放和免费实现的。目前,在浏览器通信领域还没有免费、高质量、完整的解决方案。WebRTC就是这样的技术。
  2. 该技术已经集成了最佳的音频、视频引擎,并被部署到数以百万级的终端中,经过超过8年的磨练。Google不会从该技术中收取费用。
  3. 包含了使用STUN、ICE、TURN、RTP-over-TCP的关键NAT和防火墙穿越技术,并支持代理。
  4. 构建在浏览器中,WebRTC通过提供直接映射到PeerConnection的信号状态机来抽象信号处理。Web开发人员因此可以选择适合应用场景的协议(例如:SIP、XMPP/Jingle等等)。

WebRTC的架构图如下所示:

 

图 1  WebRTC架构图(图片来源:WebRTC官方网站)

关于架构图的组成部分,包括:

Web API——第三方开发人员用来开发基于Web的应用,如视频聊天。
WebRTC Native C++ API——浏览器厂商用于实现Web API的函数集。
Session Management——抽象session层,支持调用构建和管理层,由应用开发者来决定如何实现协议。
VoiceEngine——音频媒体链的框架,从声卡到网络。
iSAC——一种用于VoIP和流音频的宽带和超宽带音频编解码器,iSAC采用16 kHz或32 kHz的采样频率和12—52 kbps的可变比特率。
iLBC——用于VoIP和流音频的窄带语音编解码器,使用8 kHZ的采样频率,20毫秒帧比特率为15.2 kbps,30毫米帧的比特率为13.33 kbps,标准由IETF RFC 3951和3952定义。
NetEQ for Voice——动态抖动缓存和错误隐藏算法,用于缓解网络抖动和丢包引起的负面影响。在保持高音频质量的同时尽可能降低延迟。
VideoEngine——视频媒体链的框架,从相机像头到网络,从网络到屏幕。
VP8——来自于WebM项目的视频编解码器,非常适合RTC,因为它是为低延迟而设计开发的。
Image enhancements——消除通过摄像头获取的图片的视频噪声等。
其他更详细的架构分析可以查看这里的文档

PeerConnection位于WebRTC Native C++ API的最上层,它的代码实现来源于libjingle(一款p2p开发工具包),目前被应用于WebRTC中。其中关键的两个类定义是:

class  PeerConnectionObserver {
public:
 virtual void OnError();
 virtual void OnSignalingMessage(const std::string& msg);
 virtual void OnAddStream(const std::string& stream_id,
                          int channel_id,
                          bool video);
 virtual void OnRemoveStream(const std::string& stream_id,
                             int channel_id,
                             bool video);
};

该类定义了一个抽象的观察者。开发人员应该继承实现自己的观察者类。

class  PeerConnection {
public:
 explicit PeerConnection(const std::string& config);
 bool Initialize();
 void RegisterObserver(PeerConnectionObserver* observer);
 bool SignalingMessage(const std::string& msg);
 bool AddStream(const std::string& stream_id, bool video);
 bool RemoveStream(const std::string& stream_id);
 bool Connect();
 void Close();
 bool SetAudioDevice(const std::string& wave_in_device,
                     const std::string& wave_out_device);
 bool SetLocalVideoRenderer(cricket::VideoRenderer* renderer);
 bool SetVideoRenderer(const std::string& stream_id,
                       cricket::VideoRenderer* renderer);
 bool SetVideoCapture(const std::string& cam_device);
};

具体的函数说明可以查看相应的API介绍

正如Google所说的,它一直在参与制定和实现HTML 5标准中的视频会议和p2p通信部分,虽然还不是正式标准,但是我们可以从草案的示例中看到未来Web开发人员的使用情况:

// the first argument describes the STUN/TURN server configuration
var local = new PeerConnection('TURNS example.net', sendSignalingChannel);
local.signalingChannel(...); // if we have a message from the other side, pass it along here
// (aLocalStream is some GeneratedStream object)
local.addStream(aLocalStream); // start sending video
function sendSignalingChannel(message) {
 ... // send message to the other side via the signaling channel
}
function receiveSignalingChannel (message) {
 // call this whenever we get a message on the signaling channel
 local.signalingChannel(message);
}
local.onaddstream = function (event) {
 // (videoElement is some <video> element)
 videoElement.src = URL.getObjectURL(event.stream);
};

目前有关Web实时通信的技术标准正在制定当中,W3C的Web Real-Time Communication工作组今年五月份刚刚正式成立,并计划在今年第三季度发布第一个公开草案,从其工作组的路线图中可以看出,正式的推荐标准预计将在2013年第一季度发布,有关W3C标准是否会对WebRTC项目的发展有所影响,未来还要看草案的具体细节。

Google希望开源的WebRTC技术能够获得越来越多的浏览器厂商支持,WebRTC的网站已经宣布将在Chrome、Firefox和Opera上实现相应的API接口。Opera首席技术官Håkon Wium Lie对媒体表示,Google能够把价值不菲的代码贡献出来非常了不起,Opera一直希望能够在浏览器中实现实时通信技术。

提到实时通信技术,不得不让人想起行业巨头Skype。巧合的是,就在前不久,微软刚刚斥资85亿美元现金收购网络电话服务商Skype,当时有许多分析师指出,微软的收购将直面Google的竞争

…...收购也挫败了竞争对手Google利用Skype技术完善通话服务的计划。

MSN即时通讯、必应(bing)搜索、网络广告等成了微软在互联网领域迎战谷歌的三大阵地。然而,相对于谷歌在互联网行业的呼风唤雨,微软的互联网战略一直没有真正展现出让业界看到其能够挑战谷歌的核心优势。

谷歌和苹果都已经在网络电话上投入了数年时间。苹果一直在力推iChat和FaceTime,谷歌也在普及其网络通信相关产品Chat和Voice。不过,谷歌和苹果都有一个共同的问题,他们很难在竞争对手的平台上生存。苹果用户无法和谷歌以及微软的用户进行视频聊天,谷歌在跨 平台方面做了很多努力,但是仍有不少障碍。

不过Skype则没有这一问题,作为免费服务的Skype可以运行在苹果、Linux以及Windows电脑上,也支持Android和iPhone等手机平台,甚至可以在电视机上运行。

收购Skype,微软不仅仅是为了从中受益,微软还希望借此使Skype远离谷歌的“魔爪”。如果谷歌收购了Skype,这对微软来说无疑是一个沉重的打击。想想吧,如果谷歌收购了Skype,并将Skype整合进Google Apps、Gmail、Google Talk和Google Voice等谷歌产品之中,再想想如果谷歌将Skype与Android平台进行一些深度整合,这对微软来说,无疑是一场灾难。即便微软并未很好的将Skype整合进自家产品之中,但这也避免了谷歌通过收购Skype来获得巨大的价值。

就在微软收购Skype不久,Google就宣布对WebRTC开源,这不免让人有所联想。有国外媒体评论说,Google此次开源是想让广大用户远离该行业的领导者如Skype和Apple的FaceTime平台。通过浏览器来支持实时通信技术,Google希望开发社区能够在自己的应用中集成该功能,从而削弱其他对手。

这已经不是Google第一次大方地开源关键项目。去年,Google曾经将VP8视频编解码项目开源,以支持HTML 5技术中的视频媒体播放。如今,多种主流浏览器都已经支持VP8格式,成为主要的多媒体格式,相比伴随着专利、付费纠纷的H.264,开放、免费的VP8更让浏览器厂商放心。

时间: 2024-10-15 21:33:19

Web实现音频、视频通信的相关文章

Digium 开源实时音频和视频通信 SDKs

Digium,WebRTC 平台 Respoke 的创造者,宣布开源 Android 和 iOS SDKs,让开发者更容易在移动应用中添加实时音频和视频通信.此外,SDK 支持实时消息通讯,在后台运行或者离线的时候也可以推送通知. Digium 表示在一个移动应用中提供实时通信支持功能一直以来就是非常复杂的任务,需要对多媒体子系统的集成,编码解码,加密和分包有非常深入的了解.而 Respoke 的目标就是提供一个简单集成方案,可以更简单的处理认证,消息传递和信号调用. 当使用 SDK 的特性时,

透视视频通信发展新趋势

随着宽带网络建设和移动互联网的飞 速发展,移动性.社交媒体以及视频通信正在显著地改变着人们的沟通和协作方式.作为当前变革的重要组成部分,视频通信领域 高速发展,呈现出一些 新的趋势,如:VaaS.融合通信.BYOD.软件虚拟及云化.超高清等.VaaS(Video as a Service)--视频通信即服务视频通信在当前存在着广泛的需求,迫切需要将视频通信能力可以作为一种可运营的业务提供给客户.目前视频通信运营主要有两种模式:一是传统运营商基于IMS架构的多媒体会议业务运营,如中国电信.Tele

视频通信云服务成新蓝海,潜力巨大

随着移动互联技术飞速发展,企业办公移动化趋势越来越明显.催生了企业对"视频"连接一切的渴求,这些渴求,带来了超过2000亿的视频会议市场份额.移动信息化研究中心CIO生态调查显示,47.1%的受访表示,移动性能为业务带来极大的推动作用,并认为它能明显提升企业与客户之间的沟通效率,对市场和品牌的建设作用显著.而就未来的发展,58.7%的受访表示,他们正在部署或者已经开始测试移动办公系统,并且这些移动办公系统与业务的结合非常紧密,下一步对企业整体的移动信息化部署工作将全面展开. 视频通信云

Silverlight与WCF之间的通信(6)silverlight+wcf+tcp视频通信[1]单工模式

其实严格来讲,这个实现并非真正意义上的视频通信,既不是P2P的,也没有很高的性能,因为基本上 是两个客户端同时往服务器上传递视频信息,然后由服务器进行中转到对方. 重点在于两点 IIS根目录下放clientaccesspolicy.xml文件 注意服务中定义数据量大小2147483646,否则有可能传递不了 这边是单向的客户端定时向服务器传递带聊天标识的数据流 [DataContract] public class UserVideo { [DataMember] public string U

李扬:“互联网+”时代的视频通信

文章讲的是李扬:"互联网+"时代的视频通信,2015年7月19日,以"开源大数据技术的生态与应用"为主题的"第四届中国大数据应用论坛"在北京大学隆重举办.本次论坛由北京大学信息化与信息管理研究中心和中国新一代IT产业推进联盟主办,北京大学CIO班教务办公室和北达软协办,CIO时代网承办.活动当天来自业界的专家领导.大数据专家.技术大咖.知名企业CIO.知名媒体等近200位嘉宾参与了此次盛会.本届论坛的主题聚焦开源大数据技术的生态与应用,嘉宾们分别

从企业业绩飘红看视频通信行业的增长点

近日,视频通信行业上市企业2015年业绩快报纷纷出炉,净利增长成为了主流色,比如,作为老牌的上市企业,华平股份发布的2015年业绩快报显示,报告期内,归属于上市公司普通股股东的净利同比增长8.05%:真视通,作为视频会议行业上市企业新成员,在2015年,实现归属上市公司股东的净利润同比上升28.45%:迪威视讯,2015年净利同比增长达218.89%.那么,究竟是什么造就了他们业绩的光辉亮丽?这对于整个视频会议行业又会产生怎样的影响? 智慧城市成视频通信市场规模扩张重要引擎 说到视频通信市场增长

web端 集成 视频

问题描述 环信能在web端集成视频即时通讯吗?我看开发文档上没有写啊? 解决方案 webim 现在不支持实时音视频

加码远程医疗 视频通信公司Vidyo获得医疗企业巨额投资

据相关媒体报道,近日,视频通信企业Vidyo公司对外宣布,获得了凯撒医疗集团(Kaiser Permanente)风险投资部门Kaiser Permanente Ventures的1000万元美元投资,该笔投资将主要用于远程医疗业务的拓展. 早在2015年12月,Vidyo公司就曾宣布,决定将优势产业高清视频通讯与电子健康记录系统和医务工作流程结合在一起,此次,成功获得新一轮注资,必将进一步推动远程医疗应用市场的进一步拓展.到目前为止,在医疗保健领域,Vidyo的使用合作方包括了Mercy.Am

云视频通信在建筑施工企业的应用

在建筑施工企业,视频通信不是一个陌生的概念.企业无论是大小,或多或少都接触过类似于视频会议.视频监控类产品.对于一些大型施工单位来说,整个集团甚至拥有多套不同厂家的视频会议系统,并且从硬件会议,到软件会议不一而足;此外许多项目部还部署了视频监控系统,以实现对项目工地的实时监控,有效减少了物料的损耗,保护了自己的权益. 尽管视频通信类系统在建筑企业比较常见,然而,在我们常年与各种规模的客户沟通过程中,发现很多系统用不起来,甚至处于闲置状态,而实际需要使用的部门却又无法得到满足,具体表现如下: 一.