zoukankan      html  css  js  c++  java
  • Android IOS WebRTC 音视频开发总结(十)-- webrtc入门002

    继续上一篇中未翻译完成的部分,主要包括下面三个部分:

    1,扩展:WebRTC多方通话.

    2,MCU Multipoint Control Unit.

    2, 扩展:VOIP,电话,消息通讯.

    注意:翻译的时候不是逐字逐句的,而是按照自己的理解翻译的,同时为了便于理解,也加入一些自己组织的语言.

    转载请说明出处: http://www.cnblogs.com/lingyunhu.

    英文来自:http://www.html5rocks.com/en/tutorials/webrtc/infrastructure/ 

     

    1对1扩展: WebRTC多方通话

    或许你可以先看看Justin Uberti提出的IETF标准.REST API for access to TURN Services.

    1对1通话之外的用户使用情形很容易想象,例如:大学之间的视频会议,或者是公共事件处理,一个人说几百个人听.在网状结构的网络中webrtc客户端能够使用

    多个RTCPeerConnections与其他各个客户端之间建立连接,talky.io用的就是这种方法,客户端不多的时候这种方式效果非常好,

    只不过这样会占用很大部分的带宽和CPU,特别是对手机端而言.

                                                                   Full mesh topology: everyone connected to everyone

                                    完整的网状拓扑:每个人彼此相连

    另外,webrtc客户端能够选择一个客户端直接发送流数据给其他客户端,在这种星状网络结构中,可以直接做一个发布发布服务端,客户端将流发给服务端,

    服务端再推送给各个客户端,以减轻客户端压力,特别是移动端,webrt.org提供了一个例子.(sample client application)

    从Chrome 31和Opera18开始,来自一个RTCPeerConnection的流数据能够作为其他端点的输入源,Demo链接(simpl.info/multi),这种能够支持更灵活的架构,

    因为他使客户端能够选择和哪个远程端点建立呼叫链接.

    多点控制单元

    大量客户端视频通话的更好处理方案是使用Multipoint Control Unit,他是一个服务器,主要是用来在各客户端之间发布流媒体数据,

    MCU能处理视频会议中不同的分辨率,帧率,编码.能够处理转码,做选择性的流媒体转发,混音,音视频数据的录制,

    对多人视频来说这里有很多问题要处理,如多人视频怎么显示?混音怎么处理?

    像 vLine这样的云平台也正在试着优化网络路由.

    如果可能您也可以通过买一个MCU硬件包来创建您自己的路由服务.

                                    The back of a Cisco MCU

                                                                      cisco MCU背面图.

    开源的MCU软件也有,例如: Licode,Mantis.

     

    扩展:VOIP,电话和消息

    webrtc的标准化属性使得通过浏览器与其他通讯平台的进行通讯是可能的,如电话,视频会议.

    SIP就是VOIP和视频会议的信令协议,如果sip客户端要与webrtc客户端之间建立通讯,首选必须有一个服务端来转换信令,

    当然如果您的webrtc客户端用的也是sip协议就不用转接了,通讯建立后,就是流媒体的转接,因为两边音视频编码不一样,

    所以需要有一个服务端做码流转换,如webrtc用的是VP8视频编码,一般视频会议用的都是H264.

     

     

    PSTN (Public Switched Telephone Network),他是普通模拟电话的电路交换网络,因此如果webrtc客户端想与电话互通,首先得经过PSTN网关.

    同样,webrtc客户端要与遵循Jingle协议的IM客户端互通,其必须有服务器来转换信令,其中Jingle由Google开发的,在XMPP基础上扩展,以支持音视频,Google Talk中用到的就是Jingle. Jingle,不过想与QQ之间互通就有点难了,QQ用的自己定义的格式,不过他们也不想也外面的产品直接互通,至于原因你懂的.

    已经有很多产品通过充分利用webrtc来与外部产品进行通讯,如:

    sipML5:开源的javascript sip客户端.

    jsSIP:javascript sip库.

    Phono:开源javascript电话库.

    Zingaya:一种嵌入式手机部件

    Twilio:语音和消息.

    Uberconference:会议.

    sipML5的开发者已经创建了webrtc2sip网关,还有webrtc通过使用OpenBTS cell在电话和电脑之间通讯.

     

    更多...

    WebRTC codelab: 一步步的操作告诉你怎么创建一个文本和视频的聊天应用,他用的是运行在Node上的Socket.io信令服务.

    2013 Google I/O WebRTC presentation with WebRTC tech lead, Justin Uberti.

    Chris Wilson's SFHTML5 presentation: Introduction to WebRTC Apps.

    这本书(WebRTC Book)给出了详细介绍关于数据和信令通道, 也包括网络拓扑图的细节.

    WebRTC and Signaling: What Two Years Has Taught Us: TokBox的博客介绍了为什么没有在规范中定义信令是一个好主意.

    Ben Strong's presentation A Practical Guide to Building WebRTC Apps 提供了许多WebRTC的拓扑结构和基础设施架构.

    The WebRTC chapter in Ilya Grigorik's High Performance Browser Networkinggoes deep into WebRTC architecture, use cases and performance.

     

    以上如果错误和遗漏,欢迎纠正和补充,不胜感激.

     

  • 相关阅读:
    ElasticSearch(二) Transport Client Connection By Domain
    ElasticSearch(一) Transport Client
    如何把Spring Boot打包成war
    Lucene Query种类
    JAVA Http Basic auth
    Java 多线程系列2——多线程的生命周期及生产消费者模型
    Java 多线程系列1——浅聊JAVA 线程池的一般用法
    JS 实现右下角弹窗
    JS 实现兼容IE图片向左或向右翻转
    Vue Input输入框两侧加减框内数字组件
  • 原文地址:https://www.cnblogs.com/lingyunhu/p/4068872.html
Copyright © 2011-2022 走看看