0.前言

这次的需求,准备做的是一个类似与QQ视频一样的点对点视频聊天。这几天了解了一些知识后,决定使用HTML5新支持的WebRtc来作为视频通讯。客户端使用支持HTML5浏览器即可。服务器段需要提供两个主要的服务功能,一个是信令服务器(Signaling Server),一个是NAT穿透服务器(ICE Server)。简单的框架图如下:

1.安装e2esoft vcam 虚拟摄像头

由于我本地是台式电脑,没有摄像头,另一方面,为了调试的方便,安装这个虚拟摄像头。
我是在这里下载的http://www.loveliao.com/downfiles/VCam_v4.5.exe

2.安装信令服务器

网上信令服务器大多是以nodejs写的。这里以skyrtc为例,进行演示。

 apt-get install nodejs npm
git clone https://github.com/LingyuCoder/SkyRTC-demo
cd SkyRTC-demo
npm install
nodejs server.js

这样浏览器访问本地http://localhost:3000就可以访问了。(主要chrome好像46以上版本,除了本地localhost和127.0.0.1本地调试外,其他的访问方式,必须要https。否则不能运行。PC端和移动端好像都是这样) Chrome报错如下:

这里准备用Firefox进行演示。移动端也是用Firefox进行演示。

手机端,用Firefox浏览器查看的效果。

 

3.安装coturn(开源的iceserver)

这个跟谷歌开源的rfc5766-turn-server 是类似的,这里我使用coturn

 git clone https://github.com/coturn/coturn
cd coturn
./configure
make
make install

安装后在coturn/examples/etc 目录下使用该命令执行

turnserver -o -a -f -v --mobility -m 10 --max-bps=100000 --min-port=32355 --max-port=65535 --user=ling:ling1234 --user=ling2:ling1234 -r demo

这样就启动好了,默认的监听端口是3478

4.修改WebRtc 客户端配置

修改Skyrtc-demo/public/SkyRTC-client.js

免费公开的stun+turn 服务器 : https://gist.github.com/yetithefoot/7592580

5.运行,查看效果

root@debian-srv:~/workspace/SkyRTC-demo# nodejs server.js

浏览器打开两个页面

  

一个PC端 一个移动端

  

亲测,移动4G可以跟我当前的网络穿透成功,但是移动3G不行。其他的网络网络运营商没有测试。单靠这些,做着玩玩还可以,距离产品还差十万八千里呢。当下的网络还是比较复杂的,IPv4告急,有些ISP分配的IP的还有可能是内网的,有些大机构的网络还是对称性NAT。而对于对称型NAT是基本不能穿透的。要经过转发, 而转发视频对带宽的消耗是很大的。真的是希望IPv6早点普及。

在线测试工具: https://webrtc.github.io/samples/src/content/peerconnection/trickle-ice/

参考资料:

  webrtc资料:  

  https://segmentfault.com/a/1190000000439103
  https://bitbucket.org/webrtc/codelab/overview
  https://github.com/LingyuCoder/SkyRTC-demo
  http://xiaol.me/2014/08/24/webrtc-stun-turn-signaling/
  http://www.mamicode.com/info-detail-513556.html

  https://simplewebrtc.com/
  https://gist.github.com/yetithefoot/7592580

  ICEServer资料

  https://github.com/coturn/coturn
  http://www.cnblogs.com/lingdhox/p/4209659.html

本文地址: http://www.cnblogs.com/wunaozai/p/5520084.html

搭建WebRtc环境的更多相关文章

  1. 使用HTML5新支持的搭建WebRtc环境来作为视频通讯

    发现如果再重新设计这块的话,又会有不同的思路.对于可定位能力,我们可以全息日志采集,将每个用户在整个系统的走向异步的抓取下来,再同步到专门的日志分析系统,在这个系统中可以根据用户号码.订单号进行过滤分 ...

  2. Flume1 初识Flume和虚拟机搭建Flume环境

    前言:       工作中需要同步日志到hdfs,以前是找运维用rsync做同步,现在一般是用flume同步数据到hdfs.以前为了工作简单看个flume的一些东西,今天下午有时间自己利用虚拟机搭建了 ...

  3. 搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展

    上一篇:搭建LNAMP环境(六)- PHP7源码安装MongoDB和MongoDB拓展 一.安装Memcached 1.yum安装libevent事件触发管理器 yum -y install libe ...

  4. 搭建LNAMP环境(二)- 源码安装Nginx1.10

    上一篇:搭建LNAMP环境(一)- 源码安装MySQL5.6 1.yum安装编译nginx需要的包 yum -y install pcre pcre-devel zlib zlib-devel ope ...

  5. 搭建LNAMP环境(一)- 源码安装MySQL5.6

    1.yum安装编译mysql需要的包 yum -y install gcc-c++ make cmake bison-devel ncurses-devel perl 2.为mysql创建一个新的用户 ...

  6. Linux 14.04lts 环境下搭建交叉编译环境arm-linux-gcc-4.5.1

    交叉编译工具链是为了编译.链接.处理和调试跨平台体系结构的程序代码,在该环境下编译出嵌入式Linux系统所需要的操作系统.应用程序等,然后再上传到目标板上. 首 先要明确gcc 和arm-linux- ...

  7. GJM : Unity3D HIAR -【 快速入门 】 二、搭建开发环境

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  8. Mac下maven工程的创建,并搭建SSH环境

    最近项目有用到maven,就特地学了一下.maven的一句话攻略就是,项目托管.帮你解决各种项目琐事:清理,导包....等等. 首先先到apach官网去下载一个maven的包,http://maven ...

  9. maven实战(01)_搭建开发环境

    一 下载maven 在maven官网上可下载maven:http://maven.apache.org/download.cgi 下载好后,解压.我的解压到了:D:\maven\apache-mave ...

随机推荐

  1. adb uninstall

    adb shell pm list packages adb uninstall com.pa.pfac

  2. C++ 记事本: 变量

    C++ 变量也许和其他语言的变量没有什么差别.就是用来存储一些可能会变值的容器. 当然 C++ 变量里又分为 原子类型 的(int , char ,bool 等等),复合类型 的(struct ,cl ...

  3. IOS中的网络编程

    在移动互联网时代,几乎所有应用都需要用到网络下载,比如图片的加载,音乐的下载,安装包的下载,等等,下面我们来看看如何进行下载 一.文件的下载我们用get来请求数据,并对请求的二进制数据进行解析存入文件 ...

  4. Enclosure POJ

    0:Enclosure http://poj.openjudge.cn/challenge3/0/ 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  131072kB 描述 为了防止 ...

  5. shell脚本编写方法

    shell脚本编写就如同一门语言,涉及到运行环境.基本语法.变量定义.函数.参数(系统参数).条件判定.执行流程控制 等等问题. 本文就以下几个方面进行描述: 运行环境: shell  shebang ...

  6. 开源Launcher - Wox 出炉了

    Wox 是一款免费开源的信息快速获取软件.她的创作灵感来自于Mac上Alfred和Window上的Launchy. 目前Wox托管在Github (http://www.github.com/qian ...

  7. No module named flask.ext.sqlalchemy.SQLALchemy

    在学习<OReilly.Flask.Web.Development>的时候,按照书的例子到了数据库那一章,在运行python hello.py shell的时候出现了“ImportErro ...

  8. Notes on how to use Webots, especially how to make a robot fly in the air

    How to create a new project Wizard - New project directory   Scene Tree Scene tree is a representati ...

  9. 仿iReader切换皮肤进度条

    仿iReader切换皮肤进度条 标签(空格分隔): 自定义View [TOC] 本以为使用paint.setXfermode(new PorterDuffXfermode(Mode.XOR));可以轻 ...

  10. 更新iOS Distribution Certificates

    1. 鑰匙圈存取 -> 憑證輔助程式 -> 從憑證授權要求憑證 email:xxx@xxxx 得到 Blia_20140129.certSigningReques 2.進入開發帳號 憑證 ...