WebRTC项目

原来的网址:http://lanhy2000.blog.163.com/blog/static/43678608201152965453830/

google开源了WebRTC项目,网址是:http://code.google.com/p/webrtc/

WebRTC实现了基于网页的视频会议,标准是WHATWG 协议,目的是通过浏览器提供简单的javascript就可以达到实时通讯(Real-Time Communications (RTC))能力。

通过对源码的粗略分析,WebRTC提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。

WebRTC的视频处理分析(windows平台)

WebRTC的视频部分,包含采集、编解码(I420/VP8)、加密、媒体文件、图像处理、显示、网络传输与流控(RTP/RTCP)等功能。

视频采集---video_capture

源代码在webrtc\modules\video_capture\main目录下,包含接口和各个平台的源代码。
    在windows平台上,WebRTC采用的是dshow技术,来实现枚举视频的设备信息和视频数据的采集,这意味着可以支持大多数的视频采集设备;对那些需要单独驱动程序的视频采集卡(比如海康高清卡)就无能为力了。
    视频采集支持多种媒体类型,比如I420、YUY2、RGB、UYUY等,并可以进行帧大小和帧率控制。

视频编解码---video_coding 
    源代码在webrtc\modules\video_coding目录下。
    WebRTC采用I420/VP8编解码技术。VP8是google收购ON2后的开源实现,并且也用在WebM项目中。VP8能以更少的数据提供更高质量的视频,特别适合视频会议这样的需求。

视频加密--video_engine_encryption 
    视频加密是WebRTC的video_engine一部分,相当于视频应用层面的功能,给点对点的视频双方提供了数据上的安全保证,可以防止在Web上视频数据的泄漏。
    视频加密在发送端和接收端进行加解密视频数据,密钥由视频双方协商,代价是会影响视频数据处理的性能;也可以不使用视频加密功能,这样在性能上会好些。
    视频加密的数据源可能是原始的数据流,也可能是编码后的数据流。估计是编码后的数据流,这样加密代价会小一些,需要进一步研究。

视频媒体文件--media_file 
    源代码在webrtc\modules\media_file目录下。
    该功能是可以用本地文件作为视频源,有点类似虚拟摄像头的功能;支持的格式有Avi。
    另外,WebRTC还可以录制音视频到本地文件,比较实用的功能。

视频图像处理--video_processing 
    源代码在webrtc\modules\video_processing目录下。
    视频图像处理针对每一帧的图像进行处理,包括明暗度检测、颜色增强、降噪处理等功能,用来提升视频质量。

视频显示--video_render 
    源代码在webrtc\modules\video_render目录下。
    在windows平台,WebRTC采用direct3d9和directdraw的方式来显示视频,只能这样,必须这样。

网络传输与流控 
    对于网络视频来讲,数据的传输与控制是核心价值。WebRTC采用的是成熟的RTP/RTCP技术。

WebRTC的音频处理分析(windows平台)

WebRTC的音频部分,包含设备、编解码(iLIBC/iSAC/G722/PCM16/RED/AVT、NetEQ)、加密、声音文件、声音处理、声音输出、音量控制、音视频同步、网络传输与流控(RTP/RTCP)等功能。

音频设备---audio_device 
    源代码在webrtc\modules\audio_device\main目录下,包含接口和各个平台的源代码。
    在windows平台上,WebRTC采用的是Windows Core Audio和Windows Wave技术来管理音频设备,还提供了一个混音管理器。
    利用音频设备,可以实现声音输出,音量控制等功能。

音频编解码---audio_coding 
    源代码在webrtc\modules\audio_coding目录下。
    WebRTC采用iLIBC/iSAC/G722/PCM16/RED/AVT编解码技术。
    WebRTC还提供NetEQ功能---抖动缓冲器及丢包补偿模块,能够提高音质,并把延迟减至最小。
    另外一个核心功能是基于语音会议的混音处理。

声音加密--voice_engine_encryption 
    和视频一样,WebRTC也提供声音加密功能。

声音文件 
    该功能是可以用本地文件作为音频源,支持的格式有Pcm和Wav。
    同样,WebRTC也可以录制音频到本地文件。

声音处理--audio_processing 
    源代码在webrtc\modules\audio_processing目录下。
    声音处理针对音频数据进行处理,包括回声消除(AEC)、AECM、自动增益(AGC)、降噪处理等功能,用来提升声音质量。

网络传输与流控 
    和视频一样,WebRTC采用的是成熟的RTP/RTCP技术。

WebRTC的官网是http://www.webrtc.org/,其中的FAQ解答了很多大家关心的问题。有这么几点可以关注:
1.license
    采用BSD licenses,可以用于商业软件;即使你修改了源代码,也不必公开你修改的部分。

2.为什么WebRTC要免费
    音视频针对目前的互联网应用,还是至关重要的。google这样做的目的,无非是吸引大量的开发者在chrome平台上开发音视频相关应用,和当年微软windows集成IE是一个道理。

3.下载和编译
    a).下载google的源码工具depot_tools:
        svn co http://src.chromium.org/svn/trunk/tools/depot_tools
        并把depot_tools添加到系统的环境变量PATH里;    
    b).下载git工具:并把git添加到系统的环境变量PATH里;
    c).创建webrtc工作目录,并在该目录下运行:
       gclient config https://webrtc.googlecode.com/svn/trunk
       gclient sync --force
 
       sync命令也会产生基于本地环境(Linux:make, OSX: XCode, Windows: Visual Studio)的build文件。

也可以用命令:
       gclient runhooks --force

对windows平台,在trunk目录下,已经有针对Visual Studio的工程文件:
       webrtc.sln

好了,打开它,这就可以编译了。
       
       注:webrtc默认使用了C:\Program Files\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses。我的机器上只有v7.0的sdk,于是构造了一个v7.1的目录,仅包含Samples\multimedia\directshow\baseclasses。

WebRTC项目

时间: 2024-11-21 02:26:51

WebRTC项目的相关文章

WebRTC 项目研究

?? WebRTC 目录(?)[+] 1.官方网站: http://sites.google.com.sixxs.org/site/webrtc/home http://sites.google.com.sixxs.org/site/webrtc/reference/webrtc-components http://sites.google.com.sixxs.org/site/webrtc/reference http://code.google.com.sixxs.org/p/webrtc/

Webrtc服务器搭建

1.WebRTC后台服务: 通话的房间服务器(Room Server) 房间服务器是用来创建和管理通话会话的状态维护,是双方通话还是多方通话,加入与离开房间等等,我们暂时沿用Google部署在GAE平台上的AppRTC这个房间服务器实现,该GAE App的源码可以在github.com上获取.该实现是一个基于Python的GAE应用,我们需要下载Google GAE的离线开发包到我们自己的Linux服务器上来运行该项目,搭建大陆互联网环境下的房间服务器. 通话的信令服务器(Signaling S

Android IOS WebRTC 音视频开发总结(七六)-- 探讨直播低延迟低流量的粉丝连麦技术

本文主要探讨基于WebRTC的P2P直播粉丝连麦技术 (作者:郝飞,亲加云CTO,编辑:dora),最早发表在[这里] 支持原创,转载必须注明出处,欢迎关注微信公众号blacker(微信ID:blackerteam  或 webrtcorgcn) 到目前为止,直播行业继续如预期的那样如火如荼的发展着,在先后竞争完延迟,高清,美 颜,秒开等功能后,最近各大直播平台比拼的一个热点就是连麦.什么是连麦? 简单??述 就是当主播直播期间,可以与其中某一个粉丝进行互动,并且其他粉丝能够观看到这个互动 过程

WebRTC 视频对话

今天聊一下WebRTC.很多开发者,可能会觉得有些陌生,或者直接感觉繁杂.因为WebRTC在iOS上的应用,只是编译都让人很是头痛.这些话,到此为止,以防让了解者失去信心.我们只传播正能量,再多的困难都是可以解决的.本博客会不断更新增加内容,不要怕长.首先看一下定义.WebRTC,名称源自网页实时通信(WebReal-TimeCommunication)的缩写,是一个支持网页浏览器进行实时语音对话或视频对话的技术,是谷歌2010年以6820万美元收购GlobalIPSolutions公司而获得的

webrtc教程

cdsn博客不支持word文件,所以这里显示不完全.可到本人资源中下载word文档: v0.3:http://download.csdn.net/detail/kl222/6961491 v0.1:http://download.csdn.net/detail/kl222/6677635  下载完后评论,可以返还你的积分.此文档还在完善中,欢迎大家交流,共同完善.    Webrtc  教程 版本0.3(2014年2月) 康林 ([email protected]) 本文博客地址:http://

视频会议及流媒体十大开源项目

在视频会议领域,有许多可以值得参考的开源项目,这些开源项目有的是协议栈.有的是编码器或者是传输协议,由于视频会议系统是一个综合性的应用系统,里面包含功能较多,如能把这些开源项目选择性的加入我们的视频会议开发当中,我们的开发效率肯定会事半功倍,下面我们列举一下视频会议相关的十大开源项目,并对其重要性及优缺点做一个全面的评价与排名. 1. OpenH323项目        (★★★★★) 上榜理由:最著名的H.323开源协议栈,视频会议开发必备协议栈,强烈推荐 最著名的H.323开源协议栈,包含了

Ubuntu14.04编译WebRTC For Android代码 2014-07-24

整整快一年没有写博客了,最近基于Google开源的WebRTC项目做了一款音视频聊天的即时通信项目,期间在下载WebRTC代码时就碰到了一些问题,在此以作记录,也希望能够帮助到正在下载编译WebRTC代码中碰到类似问题的童鞋们 1). 准备环境 1. Ubuntu14.04 LTS 系统 2. 准备一个稳定的速度还可以的VPN 或者 VPS ,这个很重要,大家都懂,大部分下载代码失败都是因为访问google服务失败导致的.(本人用的Digital Ocean, 之前试过几个VPN都以失败而告终,

WebRTC编译系统之gn files

在"WebRTC 构建系统介绍之gn和ninja"中,大概介绍了 gn 和 ninja 的简单用法,这次来看看 gn 用到的项目文件 .gn . .gni 和 DEPS ,它们指导了如何生成 ninja 构建文件. 借用 C++ 的概念,如果把 gn 看成一个编译系统, .gn 就是源文件, .gni 就是头文件.我们姑且这么理解就好了(其实 gni 里做的事情, gn 都可以做).DEPS 主要用来设定包含路径. gn 和 gni 文件都在源码树中,比如 src 目录.当执行 gn

Android WebRTC 音视频开发总结

www.cnblogs.com/lingyunhu/p/3621057.html 前面介绍了WebRTCDemo的基本结构,本节主要介绍WebRTC音视频服务端的处理,,转载请说明出处(博客园RTC.Blacker). 通过前面的例子我们知道运行WebRTCDemo即可看到P2P的效果,实际应用中我们不可能让用户自己去里面设置对方的IP和音视频端口, 而且即使设置了对方的IP和端口也不一定能运行起来,因为P2P如果双方不在同一个网段则还需穿透NAT,那服务端具体该如何部署呢? 1.信令服务: 想