WebRTC笔记(一)】的更多相关文章

webrtc是google推出的基于浏览器的实时语音-视频通讯架构.其典型的应用场景为:浏览器之间端到端(p2p)实时视频对话,但由于网络环境的复杂性(比如:路由器/交换机/防火墙等),浏览器与浏览器很多时候无法建立p2p连接,只能通过公网上的中继服务器(也就是所谓的turn服务器)中转.示例图如下: 上图中的Relay server即为turn中继服务器,而STUN server的作用是通过收集NAT背后peer端(即:躲在路由器或交换机后的电脑)对外暴露出来的ip和端口,找到一条可穿透路由器…
kurento是一个开源的webrtc mcu服务器,按官方的文档,建议在ubtntu上安装,过程如下: 注:建议先切换到root身份,如果不是root身份登录的,下列命令,请自行加上sudo . 另:kurento 6.10版,要求ubtntu最低版本为16.04,低版本的安装将出错. 1.安装gunpg apt-get update \ && apt-get install --no-install-recommends --yes \ gnupg 2.确定ubuntu版本 cat /…
问题:为什么要搞这么多架构? webrtc虽然是一项主要使用p2p的实时通讯技术,本应该是无中心化节点的,但是在一些大型多人通讯场景,如果都使用端对端直连,端上会遇到很带宽和性能的问题,所以就有了下图的三种架构. 一.Mesh架构 即:每个端都与其它端互连.以上图最左侧为例,5个浏览器,二二建立p2p连接,每个浏览器与其它4个建立连接,总共需要10个连接.如果每条连接占用1m带宽,则每个端上行需要4m,下行带宽也要4m,总共带宽消耗20m.而且除了带宽问题,每个浏览器上还要有音视频“编码/解码”…
开始正文之前,先思考1个问题:2个处于不同网络环境的(具备摄像头/麦克风多媒体设备的)浏览器,要实现点对点的实时视频/语音通讯,难点在哪? 至少得先搞定下面2个问题: 1.彼此要了解对方支持的媒体格式.支持的最大分辨率等媒体信息 比如:peerA端可支持MPEG-1/2.H264多种编码格式,而peerB端支持MPEG-4.H264,要保证二端都正确的编解码,最简单的办法就是取它们的交集H264 就象2个不同国家的人交流,1个只会讲英文.中文,另1个只会讲德语.英文,他俩肯定要能相互正常沟通,肯…
来源<WebRTC权威指南> 1 WebRTC特点 对等连接(Peer Connection):浏览器与浏览器(万维网上的任意两个通信终端)之间的连接(P2P) 信令服务器:在浏览器和对等连接另一端之间提供信令通道 2 WebRTC三角形 两个重要的概念:信令路线(三角形的两条边)和媒体数据流动路线(三角形的底边),两个浏览器之间直接通过建立对等连接来传输语音.视频媒体,以及附加数据. 终端和web服务器之间通过信令通道交互,两个对等端之间通过对等连接交互. 3 WebRTC梯形 在此网络中,…
这是kurento tutorial中的一个例子(groupCall),用于多人音视频通话,效果如下: 登录界面: 聊天界面: 运行方法: 1.本地用docker把kurento server跑起来 2.idea里启用这个项目 3.浏览器里输入https://localhost:8443/ 输入用户名.房间号,然后再开一个浏览器tab页,输入一个不同的用户名,房间号与第1个tab相同,正常情况下,这2个tab页就能聊上了,还可以再加更多tab模拟多人视频(注:docker容器性能有限,mac本上…
1.     WebRTC学习 1.1   WebRTC现状 本人最早接触WebRTC是在2011年底,那时Google已经在Android源代码中增加了webrtc源代码,放在/external/webrtc/,可是Android并没实用到它,更没有被浏览器使用.当时试图在Android 2.3(Gingerbread)高通平台的手机上用H.264 硬件codec替换掉WebRTC缺省使用的VP8软codec,费了不少劲勉强换掉后效果非常差仅仅得放弃. 近期得知Google最新版的Chrome…
最近正在修改webrtc的Android端demo和服务器交互的内容,介绍一下demo的大体结构吧,以便能快速回忆. 环境:Android5.0以上.libjingle_peerconnection_so.so库.autobanh.jar和libjingle_peerconnection.jar 注意:想安装为系统应用,注意要将so库放到system/lib目录下,否则会找不到so库. 主要类介绍: ConnectActivity类为程序入口,提供添加房间号.删除房间号.加入房间和创建房间等功能…
最近在做一个基于webrtc的视频软件,以下是自己对于上层建立通话连接流程的基本理解,记录于此. 假设A和B要建立视频通话,A为房间创建端,B为加入房间端: 1.A通过http登录.获取其他服务器地址(做一些保存用户信息的操作,获取信令.stun.turn服务器地址等,非必要) 2.A和信令服务器建立websocket长连接 3.A通过websocket向信令服务器注册(创建房间,记录房间号,等待B加入房间) 4.A创建本地视频,获取A的sdp信息 5.B创建本地视频,获取B的sdp信息 6.B…
获取笔记本摄像头视频流 <html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <video id='video' autoplay></video> <script src="adapter.js"></script> <script> var video = docu…