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 介绍 (转)的更多相关文章

  1. 《Getting Started with WebRTC》第一章 WebRTC介绍

    <Getting Started with WebRTC>第一章 WebRTC介绍 ​ 本章是对WebRTC做概念性的介绍. 阅读完本章后.你将对下面方面有一个清晰的理解:   .  什么 ...

  2. WebRTC介绍及简单应用

    WebRTC介绍及简单应用 WebRTC,即Web Real-Time Communication,web实时通信技术.简单地说就是在web浏览器里面引入实时通信,包括音视频通话等. WebRTC实时 ...

  3. Android之WebRTC介绍

    参考自:Introduction to WebRTC on AndroidAndroid之WebRTC介绍 WebRTC被誉为是web长期开源开发的一个新启元,是近年来web开发的最重要创新.WebR ...

  4. Android之WebRTC介绍(二)

    WebRTC提供了点对点之间的通信,但并不意味着WebRTC不需要服务器.暂且不说基于服务器的一些扩展业务,WebRTC至少有两件事必须要用到服务器: 1. 浏览器之间交换建立通信的元数据(信令)必须 ...

  5. WebRTC学习资料大全

    在学习WebRTC,找了些资料,记录一下,供以后查询. 有些需要FQ才能看 WebRTC 介绍 官网在这里:https://webrtc.org/.然后这里有一个官方的Getting Started: ...

  6. SIP SDP RTSP RTP RTCP webrtc

    rfc1889  rfc2326  rfc3261  rfc3550  rfc3856  rfc6120. SIP SDP RTSP  RTP RTCP,就像他们出现的顺序一样,他们在实际应用中的启用 ...

  7. WebRTC Demo - getUserMedia()

    WebRTC介绍 WebRTC提供三类API: MediaStream,即getUserMedia RTCPeerConnection RTCDataChannel getUserMedia已经由Ch ...

  8. iOS下WebRTC音视频通话(一)

    在iOS下做IM功能时,难免都会涉及到音频通话和视频通话.QQ中的QQ电话和视频通话效果就非常好,但是如果你没有非常深厚的技术,也没有那么大的团队,很难做到QQ那么快速和稳定的通话效果. 但是利用We ...

  9. Android端WebRTC点对点互连

    项目准备 信令服务器代码:https://github.com/matthewYang92/WebRtcServer(代码改自ProjectRTC) 安装Node.js 进入项目根目录,命令行:npm ...

随机推荐

  1. 【转】如何在VC下检测当前存在的串口及串口热拔插

    当我们在用VS进行串口编程时,在打开串口前,经常想知道当前PC上存在多少个串口,哪些串口可用?哪些串口已经打开了,最好是在一个Combo Box中列表系统当前所有可用的串口以供选择,然而如何获取系统当 ...

  2. c++基本配置属性页

    怎么调试一个项目. 需要配置好环境. 在一个release版本的环境中,调试要用release-debug版本,一般不用debug版本. 配置类型一般不变.

  3. k8s搭建WebUI--Dashborad管理界面

    k8s的webUI管理界面可以更好更直观更便捷的让我们去管理我们的k8s集群. 我们知道,由于某些原因我们无法直接拉取dashboard的镜像,但是国内有些人已经将镜像下载到dockerhub中可以给 ...

  4. How to Install Zabbix Server on Centos6.7

    Prerequisite Environment First you must use your Subscription Manager to enable SCL: [root@fileserve ...

  5. tomcat报错:java.io.IOException: 您的主机中的软件中止了一个已建立的连接。

    tomcat报错: org.apache.catalina.connector.ClientAbortException: java.io.IOException: 您的主机中的软件中止了一个已建立的 ...

  6. FastJsonUtils工具类

    fastjson是由alibaba开源的一套json处理器.与其他json处理器(如Gson,Jackson等)和其他的Java对象序列化反序列化方式相比,有比较明显的性能优势. 版权声明:本文为博主 ...

  7. 不使用脚手架的 vue 应用

    工作中的项目不止有页面繁多的模块化项目,还会只有一两个页面的类似于填写信息参与活动的活动页.这个时候,就可以回归以前的三剑客模式,在 index.html 里引用 vue.js 进行开发. 关键点: ...

  8. day24 01 初识继承

    day24 01 初识继承 面向对象的三大特性:继承,多态,封装 一.继承的概念 继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类 cla ...

  9. Python学习笔记:open函数和with临时运行环境(文件操作)

    open函数 1.open函数: file=open(filename, encoding='utf-8'),open()函数是Python内置的用于对文件的读写操作,返回的是文件的流对象(而不是文件 ...

  10. HDU - 1864 最大报销额 (背包)

    题意: 现有一笔经费可以报销一定额度的发票.允许报销的发票类型包括买图书(A类).文具(B类).差旅(C类),要求每张发票的总额不得超过1000元,每张发票上,单项物品的价值不得超过600元.现请你编 ...