首先要注意一个重要的问题——问什么样的SFU是最好的就像问什么样的车是最好的。如果你只想快点,那么你应该买一辆一级方程式赛车,但这不会帮助你送孩子上学。供应商从不对这些类型的测试感到兴奋,因为它把它们的功能归结为几个性能指标。这些指标可能不是其设计标准的主要部分,而且很多时候他们并不是那么重要。特别是对于WebRTC SFU,因为您可以在SFU上加载很多流,所以可能存在有许多弹性,用户行为和成本优化的原因。负载测试也不会深入研究端到端用户体验、开发的易用性,或者所有其他能够成功实现服务的功能元素。最后,像这样发表的报告代表了一个时间点——这些系统一直在改进,所以今天的结果可能会更好。
谁是最好的WebRTC SFU?
2019-11-24 13:44:42WebRTC 开发实践:如何实现 SFU 服务器
2019-11-24 13:43:31上一篇文章《WebRTC 开发实践:为什么你需要 SFU 服务器》我们了解了 WebRTC SFU 服务器的基本原理和必要性,解决了 What 和 Why,本文则更近一步,探究一下实现 SFU 服务器的关键技术点有哪些 ?重点解决一下 How
1 什么是 SFU ?
首先,我们再看一次 SFU 服务器的定义,什么是 SFU ?
SFU 的全称是:Selective Forwarding Unit,是一种路由和转发 WebRTC 客户端音视频数据流的服务端程序。
WebRTC 入门教程(一)| 搭建WebRTC信令服务器
2019-11-23 01:04:18作者:李超,音视频技术专家。本入门教程将分为三篇内容,分别讲述信令服务器的搭建、媒体服务器的搭建、Android 端的 WebRTC 应用实现,全文采用开源框架来搭建,适用于大多数入门的开发者。转载请注明:来自 WebRTC 中文网。
如遇到问题,请移步论坛与作者交流。
前言
我们在学习 WebRTC 时,首先要把实验环境搭建好,这样我们就可以在上面做各种实验了。
对于 WebRTC 来说,它有一整套规范,如怎样使用它的接口、使用SDP进行媒体协商、通过ICE收集地址并进行连通性检测等等。除此之外,WebRTC还需要房间服务器将多端聚集到一起管理,以及信令服务器进行信令数据交换(如媒体描述信息SDP的交换,连接地址的交抽换等),但在WebRTC的规范中没有对这部分内容进行规定,所以需要由用户自己处理。
你可以根据自己的喜好选择服务器(如 Apache,Nginx 或 Nodejs),我今天将介绍如何使用 Nodejs 来搭建信令服务器。
WebRTC vs. Zoom 之外:WebRTC 的弱网模拟测试
2019-11-23 01:03:02作为一个使用 WebRTC 独立开发者或团队,怎样才能知道自己 App 的通话质量已经“达标”了呢?如何进行合理的弱网模拟测试?介绍给开发者们三个开源工具的部署、使用方法,及其各自优缺点。
如果你是长期关注 WebRTC 的资深开发者或技术爱好者,你可能留意到了,近期圈子里出了一个不大不小的话题,引得一些知名 WebRTC 技术博主纷纷发声,表明观点。
事情是这样的。
前不久,Jitsi 在其官方博客[1]上发布了一个 WebRTC 与 Zoom Web 客户端的视频通话对比测试。测试结果显示,WebRTC 的视频通话质量比 Zoom 还要好。一石激起千层浪,不少博主发表了自己的看法。
看似是在挑事,但 Jitsi 出此一举完全事出有因。
Jitsi 是一个开源项目,可帮开发者在 Web 、Windows、Linux、Mac OS X、Android 平台上实现实时的语音、视频通话应用。有很多独立开发者在基于这套代码开发自己的视频通话应用。这一切,都是建立于 WebRTC 的基础之上实现的。然而, Jitsi 却看到作为视频会议服务提供商的 Zoom 不但从 2015 年开始就在一些地方一再声称自己并没有使用 WebRTC,甚至不断表示“WebRTC 是一种能力非常有限的解决方案”:
WebRTC adapter.js是什么以及我们为什么需要它?(二)
2019-11-23 01:01:05有4种力量来推动adapter.js:
1. WebRTC规范本身。这正是我们所期望的,并建议开发人员针对此点进行工作。
2. 浏览器的WebRTC的实现。目前,它排在WebRTC规范之后。在这之前,建议使用adapter.js(你也可以自己写,但为什么又要花额外的精力来维护它呢?)
3. adapter.js实现。你需要时刻关注新版本,采用新版本,并且对它们进行测试。
4. 你自己的实现,以及如何与上述3种力量来搭配。
我们会有那么一天不需要adapter.js吗?
WebRTC adapter.js是什么以及我们为什么需要它?(一)
2019-11-23 01:00:14这里的主要概念是展示WebRTC与传统VoIP的不同之处。
在传统VoIP中,你有多个供应商实施该规范,希望实现能够相互协作。如果你知道一个VoIP的实现,它也不代表你也能了解另一个VoIP的能力。
WebRTC有所不同,它有很多概念都没有规定,但也规定了HTML5;我的意思是让每个开发人员都可以使用一个API将交互式语音和视频添加到他的应用程序中。
getUserMedia,PeerConnection和数据通道都是WebRTC中指定的API。而这也创造了一个生态系统。传统的VoIP不可能有这样的力量。
但问题是,你可以只将WebRTC API视为一种建议。这是因为直到今天,规范的1.0版本也没有成为现实。WebRTC的浏览器实现更像是同一种语言的方言。你自己说一种方言,你可以听懂另外一种方言,但又不能完全理解。如果说着两种不同方言的人试图在没有耐心或彼此理解的情况下进行交谈,就会发生不好的事情。
这也许就是adapter.js发挥作用的地方。
在我们问自己adapter.js在今天是否需要之前(是的我们需要),我们首先应该花点时间理解它发展过程。
利用WebRTC和TensorFlow通过网络实现计算机视觉3
2019-11-23 00:55:51原标题:Computer Vision on the Web with WebRTC and TensorFlow
前文连接:利用WebRTC和TensorFlow通过网络实现计算机视觉1;利用WebRTC和TensorFlow通过网络实现计算机视觉2
第3部分——浏览器端
开始之前,请先在项目的根目录位置创建一个static目录。我们将从这里提供HTML和JavaScript。
现在,我们首先使用WebRTC的getUserMedia抓取一个本地摄像头Feed。从这里,我们需要将该Feed的快照发送到刚刚创建的对象检测Web API,获取结果,然后使用画布实时地在视频上显示这些结果。
HTML
我们先创建local.html文件:
利用WebRTC和TensorFlow通过网络实现计算机视觉2
2019-11-23 00:55:22
第1部分——确保Tensorflow正常工作
为确保TensorFlow对象检测API正常工作,我们首先从用于演示对象检测的官方版Jupyter Notebook经调整后的版本着手。我将此文件保存为object_detection_tutorial.py。
如果您剪切并粘贴该notebook的每个部分,得到的结果应如下所示:
基于网页的语音命令识别
2019-11-23 00:54:37原标题:Web-based voice command recognitions
上一次我们将音频buffer转成了图像,这一次,我们将采取这些图像,并使用deeplearn.js训练一个神经网络。结果是一个浏览器上的demo,你可以说出“yes”或者“no”的指令,然后像这样实时的显示出识别结果:
虽然它离完美还差的很远,但却是在网上进行各种音频识别的一个很好的起点。现在让我们深入了解一下这是如何工作的。
快速入门:培训和测试一个指令识别器
下面是如何训练yes/no分类器的方法:
1. 跳转到模型训练页。这会花一点时间来下载训练数据(yes/no)。
2. 点击训练按钮,你会看到一个显示训练进度的图表。一旦你准备好了(会花一点时间,具体时间长短取决于你的硬件),停止训练,并且点击保存权重(文件)按钮。这会下载一个JSON文件。