通过WebRTC实现实时视频通信(一)

通过WebRTC实现实时视频通信(二)

通过WebRTC实现实时视频通信(三)

在上一篇文章中,我们讲解了WebRTC的概述、历史、安全性和开发者工具。接下来我们通过WebRTC的三个API来具体的讲解构建WebRTC的流程,这篇文章会对MediaStream进行讲解。

MediaStream (别名 getUserMedia)

MediaStream API 代表媒体数据流的同步。举个例子,从相机获取的视频流的同步和跟踪。

理解MediaStream最简单的方法应该就是看看它的实际应用:

  1. 在Chrome或Opera中, 打开这个demo simpl.info/gum

  2. 打开命令行。

  3. 查看全局范围的数据流变量。

每个MediaStream都有一个输入,这个输入可以理解成MediaStream生成的一个导航器。getUserMedia()可以传输视频元素或者是RTCPeerConnection。

getUserMedia()方法有三个参数:

  • 一个 约束对象

  • 一个成功的回调,如果成功会回传一个MediaStream

  • 一个失败的回调,如果失败会回传一个error对象。

每个MediaStream都有一个标签,像'Xk7EuLhsuHKbnjLWkW4yYGNJJ8ONsgwHBvLQ'一样,getAudioTradks()和getAudioTracks()方法会回传一个MediaStreamTracks对象的数组。

针对 simpl.info/gum 这 个例子来说,stream.getAudioTracks() 返回了一个空数组 (因为没有音频) , 假设已经有一个摄像头连接成 功,getVideoTracks()会返回一个MediaStreamTrack对象的数组, 这个数组代表从摄像头得到的数据流。每个 MediaStreamTrack都有一个类型 ('video' 或 'audio'), 和一个标签(代表一个或多个频道的音频或视频),在这个例子 中,只有video track,但是很容易想象到可以用到这个例子的地方,比如一个聊天应用程序的前置摄像头、后置摄像头,一个屏幕分享软件等等。

在Chrome或Opera中, URL.createObjectURL() 方法把MediaStream 转换成了一个 Blob URL,Blob URL可以看成一个视频元素的src。 (在Firefox和Opera中,视频的src可以通过数据流本身设定)。

getUserMedia 也可以作为网络音频API的输入节点

。。。。。

原文来自:通过WebRTC实现实时视频通信(二)

通过WebRTC实现实时视频通信(二)的更多相关文章

  1. 通过WebRTC实现实时视频通信(三)

    通过WebRTC实现实时视频通信(一) 通过WebRTC实现实时视频通信(二) 通过WebRTC实现实时视频通信(三) 在这篇文章中我们继续了解WebRTC的相关API,RTCPeerConnecti ...

  2. 通过WebRTC实现实时视频通信(一)

    通过WebRTC实现实时视频通信(一) 通过WebRTC实现实时视频通信(二) 通过WebRTC实现实时视频通信(三) WebRTC,名称源自网页实时通信(Web Real-Time Communic ...

  3. WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建

    WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建 四月 4, 2019 作者:李超,音视频技术专家.本文首发于 RTC 开发者社区,欢迎在社区留言与作者交流. htt ...

  4. Netty入门之客户端与服务端通信(二)

    Netty入门之客户端与服务端通信(二) 一.简介 在上一篇博文中笔者写了关于Netty入门级的Hello World程序.书接上回,本博文是关于客户端与服务端的通信,感觉也没什么好说的了,直接上代码 ...

  5. iOS开发之使用XMPPFramework实现即时通信(二)

    上篇的博客iOS开发之使用XMPPFramework实现即时通信(一)只是本篇的引子,本篇博客就给之前的微信加上即时通讯的功能,主要是对XMPPFramework的使用.本篇博客中用到了Spark做测 ...

  6. iOS下WebRTC音视频通话(二)-局域网内音视频通话

    这里是iOS 下WebRTC音视频通话开发的第二篇,在这一篇会利用一个局域网内音视频通话的例子介绍WebRTC中常用的API. 如果你下载并编译完成之后,会看到一个iOS 版的WebRTC Demo. ...

  7. 如何使用HTML5的WebSocket实现网页与服务器的双工通信(二)

    本系列服务端双工通信包括两种实现方式:一.使用Socket构建:二.使用WCF构建.本文为使用WCF构建服务端的双工通信,客户端同样使用Html5的WebSocket技术进行调用. 一.创建WCF服务 ...

  8. Android中Service通信(二)——绑定Service进行通信

    一.把输入文本的数据同步到服务的实例(如何执行服务的内部代码) 绑定服务比启动服务更加方便高效,绑定服务中的直接方法调用比Intent作为载体传输更为快捷得多. 1.activity_main.xml ...

  9. 【Unity3D技巧】在Unity中使用事件/委托机制(event/delegate)进行GameObject之间的通信 (二) : 引入中间层NotificationCenter

    作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 一对多的观察者模式机制有什么缺点? 想要查看 ...

随机推荐

  1. BZOJ 2118 墨墨的等式(最短路)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2118 [题目大意] 求a1x1+a2y2+…+anxn=B在B的取值范围,有多少B可以 ...

  2. mac下递归创建ctags报错: "illegal option -- R"

    在mac系统下不论是使用vim还是sublime text2的ctags插件都会碰到“illegal option -- R”这个错误,原因是mac使用的是自己的ctags,而我们通常在linux或w ...

  3. Codeforces Round #259 (Div. 1) A. Little Pony and Expected Maximum 数学公式结论找规律水题

    A. Little Pony and Expected Maximum Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://codeforces.c ...

  4. BZOJ 1208: [HNOI2004]宠物收养所 SET的妙用

    1208: [HNOI2004]宠物收养所 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4902  Solved: 1879 题目连接 http:/ ...

  5. wikioi 1080 线段树练习 树状数组

    1080 线段树练习 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond       题目描述 Description 一行N个方格,开始每个格子里都有一个整数.现 ...

  6. C#高级编程9-第6章 数组

    数组 1.同一类型和不同类型的多个对象 需要使用同一类型的多个对象则使用集合和数组. Array类为数组元素排序和过滤提供了多个方法,使用枚举器,可以迭代数组所有元素. 2.简单数组 数组的声明 因为 ...

  7. php在linux后台执行

    <?php ignore_user_abort();//后台运行 ini_set('default_socket_timeout', -1);//socket不超时 set_time_limit ...

  8. 理解linux下源码、yum和rpm安装方法的特点

    1.yum可看作在线安装,只需yum install 软件名,系统就自动根据yum源配置文件中的镜像位置去下载安装包,并可以自动分析所需的软件依赖关系,自动安装所需的依赖软件包.简单方便,不易出错,不 ...

  9. Tasker to proximity screen off

    If you are using proximity screen off pro or smart screen off, you may know how convenient it is to ...

  10. ASP.NET WEB API 调试

    ASP.NET WEB API 中的路由调试与执行过程跟踪 http://www.cnblogs.com/Irving/p/4305493.html 路由调试 RouteDebugger 是调试 AS ...