关于webRTC
webRTC是浏览器实现的,用来实现p2p实时通讯的协议
现在已经被chrome和firefox支持
webRTC实现了三个API供前端开发者调用
- MediaStream(或者叫getUserMedia),取得媒体(音频或者视频或者其他)的传输流
- RTCPeerConnection,建立p2p网络连接
- RTCDataChannel,传输数据
建立p2p连接需要知道用户的真实地址,理论上用户都是暴露在公网上的,有ip和端口。
但是现实中,很多连接都是通过路由器等NAT设备转发的,并不能一下子得到用户的真是ip和端口
所以需要“STUN”服务器去检测用户的真实地址
之后得到用户的真实可用的网络信息之后,才能建立webrtc连接
在得到了用户的可用的网络信息之后,用户彼此之间需要交换各自的网络信息
这种交换webRTC并没有规定使用何种协议,可以使用websocket来做这种交换
真实的webRTC应用中,需要一台server去帮助用户交换网络信息和媒体信息
交换网络信息和本地媒体信息之后,就可以建立连接了
关于webRTC的更多相关文章
- 使用WebRTC搭建前端视频聊天室——数据通道篇
本文翻译自WebRTC data channels 在两个浏览器中,为聊天.游戏.或是文件传输等需求发送信息是十分复杂的.通常情况下,我们需要建立一台服务器来转发数据,当然规模比较大的情况下,会扩展成 ...
- 使用WebRTC搭建前端视频聊天室——点对点通信篇
WebRTC给我们带来了浏览器中的视频.音频聊天体验.但个人认为,它最实用的特性莫过于DataChannel——在浏览器之间建立一个点对点的数据通道.在DataChannel之前,浏览器到浏览器的数据 ...
- 使用WebRTC搭建前端视频聊天室——信令篇
博客原文地址 建议看这篇之前先看一下使用WebRTC搭建前端视频聊天室——入门篇 如果需要搭建实例的话可以参照SkyRTC-demo:github地址 其中使用了两个库:SkyRTC(github地址 ...
- 使用WebRTC搭建前端视频聊天室——入门篇
http://segmentfault.com/a/1190000000436544 什么是WebRTC? 众所周知,浏览器本身不支持相互之间直接建立信道进行通信,都是通过服务器进行中转.比如现在有两 ...
- WebRTC的一个例子
内容引自:一个WebRTC实现获取内网IP的例子(穿透NAT) 网页代码直接复制到下面(如果以上链接被墙,可以直接将下面代码保存文件,然后在浏览器打开即可,不支持IE浏览器): <!doctyp ...
- WebRTC音频预处理单元APM的整体编译及使用
正文 行的gnu静态库链接路径是针对NDK版本 r8d 的,如读者版本不匹配,请自行找到 libgnustl_static.a 静态库的路径进行替换. 3)本示例并不打算编译 WebRTC 的测试工程 ...
- 单独编译使用WebRTC的音频处理模块
块,每块个点,(12*64=768采样)即AEC-PC仅能处理48ms的单声道16kHz延迟的数据,而 - 加载编译好的NS模块动态库 接下来只需要按照 此文 的描述在 android 的JAVA代码 ...
- webrtc中APM(AudioProcessing module)的使用2
这个其实就是从Audio_processing.h中拿出来的. APM should be placed in the signal chain as close to the audio hardw ...
- webrtc中APM(AudioProcessing module)的使用
一,实例化和配置 AudioProcessing* apm = AudioProcessing::Create(0); //这里的0指的是channelID,只是一个标注那个通道的表示 apm-> ...
- WebRTC通信流程
WebRTC是HTML5支持的重要特性之一,有了它,不再需要借助音视频相关的客户端,直接通过浏览器的Web页面就可以实现音视频对聊功能.而且WebRTC项目是开源的,我们可以借助WebRTC源码快速构 ...
随机推荐
- leetcode535
public class Codec { const string alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVW ...
- Django templates 和 urls 拆分
如果在Django项目 下面新建了blog和polls两个APP应用,在每个APP下面都各自新建自己的url和templates,那么我们需要如何进行项目配置呢? INSTALLED_APPS = [ ...
- iOS布局之Auto Layout
学习资源: <iOS6核心编程>自动布局部分 <iOS6范例经典>自动布局部分 Tutorial: iOS 6 Auto Layout versus Springs and S ...
- mysql主从错误180301
Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ...
- 高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式
通过<高性能Web服务器Nginx的配置与部署研究——(11)应用模块之Memcached模块的两大应用场景>一文,我们知道Nginx从Memcached读取数据的方式,如果命中,那么效率 ...
- Java-汉字繁体拼音转换
import com.github.stuxuhai.jpinyin.ChineseHelper; import com.github.stuxuhai.jpinyin.PinyinFormat; i ...
- Java基础知识常识总结
Java基础知识常识总结 1.面向对象的特征以及对他的理解? 封装,继承,多态,如果再增加一条就是抽象. 2.Object有几种方法,分别是什么? 在JDK1.5中的11种方法,分别有: toStri ...
- Halcon中一些突然想不起来但确实有用的算子
1.Develop dev_display 在现有图形窗口中显示图像目标. dev_set_color 设置一个或更多输出颜色,通常用于设置region或者xld的颜色. dev_set_dra ...
- Monkey&Monkey Runner使用
adb shell monkey -p com.ajb.sp -s 500 --ignore-crashes --ignore-timeouts --monitor-native-crashes -v ...
- ros console_bridge找不到
Could not find a package configuration file provided by "console_bridge" with any of the f ...