Search Results for: TURN – Page 7

Distord如何使用WebRTC处理250万用户同时进行的音频交流

在最开始,我们在产品方面做出了用户可以感受到的改变,这让你与朋友玩游戏时,Discord非常适合你们之间的语音交流。这些决定让我们在资源有限并且团队比较小的情况下扩大了经营。 本文简要介绍了Discord使用的不同技术,来让视频音频交流达到接近现实的效果。 为了区分,我们将会使用guild来代表一组用户和频道-在客户端它们被称为servers. Server被用来描述我们的后端架构。 Guilding 原则 Discord中所有音频视频交流都是多方的。支持大规模组内交流需要客户端-服务器的网络架构因为当参与者人数增多时,点对点网络变得非常昂贵。 通过Discord servers发送你所有的数据同样确保在输入文本,声音或视频时你的IP地址不会被泄露,这防止了其他人找到你的IP地址并且创建DDoS来攻击你。通过媒体服务器发送具有其它优势,例如对于使人讨厌的参与者,管理员可以选择禁止他的音频视频交流。 客户端架构 Discord在许多平台上运行: 1.网页 (Chrome/Firefox/Edge, etc.) 2.脱机app(Windows, MacOS, Linux) 3.手机(iOS

Safari中的WebRTC教程

自Apple向Safari中加入WebRTC支持以来已经有一年多时间了,我之前关于具体实现的文章没有反映其中的一些更新。更重要的是,考虑到其中的不同和限制,对Safari来说,关于如何更好地开发WebRTC app还存在许多问题。 在Cluecon上我与Chad Phillips交流,最终谈到了他在Safari上使WebRTC工作的艰难经历。对此他有许多不错的建议。 Chad经常发布一些开源代码并且也是FreeSWTICH产品的贡献者。自从2015年,他就从事WebRTC的开发工作。最近他安装了Moxiemeet,一个用来进行在线试验的视频会议平台,他是此平台的CTO,并且在本文中发表了很多想法。 2017年6月,Apple成为了最后一个发布WebRTC支持的主要供应商,为平台之间相互使用铺平了道路。 但是,一年之后,对于开发者来说,关于如何集成他们的WebRTC app和Safari/iOS的指导教程依然很少。除了一些由WebKit团队发布的文章,还有StackOverflow上的一些问题,我没有看到太多对此方面的支持。本文尝试填充它们之间的间隙。 我花了几个月时间来努力的使一个复杂

什么是WebRTC,如何避免3个最致命陷阱?

原文标题:What is WebRTC and How to Avoid its 3 Deadliest Pitfalls 作者:‘Dmitry Davidov’ 什么是WebRTC,如何避免3个最致命陷阱? WebRTC是一个可以使我们在浏览器或移动App中直接进行音频/视频交流的技术,例如Google Hangouts, Facebook Messenger, 和Discord.另外,它还可以进行P2P文件共享,处理大量音频数据,实现在线视频会议等等,但是当我们到达WebRTC的底层时,事情变得复杂起来。 关于我们WebRTC APP的故事起始于2018年2月份,简单来说,一个叫Redacted的人在开会时想要我们实现一个具有redacted特性的redacted APP。你可以将它理解为实时视频交流。 陷阱1:不理解WebRTC技术。 起初,我们对WebRTC没有任何实际经验。尽管2011年就发布了WebRTC,但是它的想法包含了许多已经建立的领域,例如VoIP交流,网站开发, 视频流等等。 但是WebRTC是一种新技术,它在浏览器中的实现经常变化,你所了

如何使用WebRTC和Kurento媒体服务器,来建立视频会议App(一)

原文标题:[TUTORIAL] ​How ​to ​Build ​a ​Video Conference ​Application ​with WebRTC ​& ​Kurento ​Media ​Server 作者:‘Hector Zelaya’ 了解WebRTC如何工作的一种简单方式是通过学习如何使用WebRTC和Kurento媒体服务器建立视频会议App。尽管WebRTC最初的想法是建立peer-to-peer连接,媒体服务器对于添加先进的诸如录制,多方通话等功能是非常有用的。我们将会使用Kurento,它是一个开源媒体服务器,来为我们App中多于两个用户的情况下提供支持。让我们来回顾整体的过程,我们将通过WebRTC建立连接的过程分为三步: 1.浏览器获取媒体设备(摄像头和麦克风) 2.每一个peer通过发信过程与其它所有peer交换信息。 3.交换信息过后,peers可以通过媒体服务器连接,并开始通信。 注意,对于交换信息我们依然需要一个信令服务器,对于NAT穿透我们需要STUN或TURN服务器。另外,我们添加了一个媒体服务器用来将流引到各个p

教程:如何使用WebRTC建立一个视频会议App(一)

  本篇博文将会提供一个关于如何使用WebRTC建立一个视频会议App的教程。 我们不会将其设计的太复杂,它将会是一个简单的一对一视频会议App,并且仅仅使用了WebRTC APIs和一些其他的library来建立一个信令服务器。 在开始之前,让我们首先进行一个快速摘要简述。 为此我们应该观察如下WebRTC通信过程的图。 WebRTC的通信过程可以看成如下三步: 1.浏览器获取媒体设备(摄像头和麦克风)。 2.通过信令过程,每一个peer和其它所有peer交换信息。 3.发信之后,peers可以直接连接,并开始通信交流。 为了实现这个过程,对于交换信息需要一个信令服务器。同样需要一对STUN/TURN服务器来实现NAT穿透。并且在不能直接通信的情况下传递媒体。 让我们转到App设计的部分。 App 就如之前所说,我们将会建立一个简单的一对一视频会议App.它将会有一个房间功能,在每个房间将会主持不同的会议。 用户首先看到一个需要输入房间号的屏幕界面,可以是用户想去的任意一个房间,接着当另一个用户想要加入的时候,他可以输入同样的房间号来开始交流通话。 此教程的代码在Githu

使用getDisplayMedia实现在Chrome中屏幕共享

原文标题:Chrome Screensharing Blues – preparing for getDisplayMedia 作者: “Philipp Hancke“ 使用getDisplayMedia实现在Chrome中屏幕共享 Chrome网上商店已经决定停止允许Chrome扩展部件的内联安装,这对WebRTC应用有着极大的影响,因为目前在Chrome中屏幕共享需要扩展部件。GetDisplayMedia API 能不能解决这个问题呢? Chrome中屏幕共享 当Chrome33中引入屏幕共享时,需要扩展部件来解决安全问题。这比之前的做法更好,之前的做法是将这种能力置于一个标志之后,这个标志允许用户根据需求修改。 自2003年之后,Chrome没有做出太大改变。需要扩展部件增加了与屏幕共享过程的摩擦,但是由于内联安装,这种摩擦被最大限度的减小了: 1.用户点击按钮开始屏幕共享。 2.Web应用检测Chrome并确定出未安装的扩展部件。 3.Web应用触发内联安装API,获得成功回调。 4.Chrome桌面、窗口、标签共享选择器弹出,允许用户选择共享哪部分。 关于全部实现请查看ge

使用ML Kit进行笑脸检测

原文标题:Using ML Kit for Smile Detection 作者: “Roberto Perez“,”Gustavo Garcia” 使用ML kit进行笑脸检测 目前进行视频通话相对容易,我们可以继续对视频流做更有趣的事。伴随着机器学习的进步和越来越多的API,计算机视觉变得更容易。谷歌的ML kit是一新机器学习的实例,它基于一个库,这个库可以快速得到计算机视觉的输出结果。 为了展示如何使用谷歌ML kit 来检测实时WebRTC流中用户的笑脸, 首先要感谢webrtcHacks作者,HouseParty公司的Gustavo Garcia Bernardo. 还要感谢TokBox的移动WebRTC专家,Roberto Perez.它们教了我一些面部识别的背景知识,展示了一些代码实例,更重要的是,分享了他们在一个RTC app中准确进行面部识别的过程。 PS – tsahi和我正在进行一项关于RTC中人工智能的简短调查,如果你正在RTC环境里做一些机器学习的项目,或对此有些想法, 请花几分钟回答几个问题。 编

WebRTC对等连接(二)- 连接不同设备上的浏览器

原文标题:Learning WebRTC peer-to-peer communication, part 2 作者:Swizec Teller WebRTC对等通信-在不同设备上连接浏览器 我们成功了!不需要服务器即可使不同设备上的两个浏览器相互交流,只需要在开始交互的时候使用服务器。 点击此处运行代码,在不同的设备上打开两个链接。 如何使用WebRTC连接不同设备上的浏览器 你可以使用WebRTC在无服务器时使浏览器相互交流,但是由于没有服务发现,我们需要一个发信服务器来使浏览器可以找到彼此。 步骤如下: 1.客户端1 对服务器说hi并注册。 2.客户端2 对服务器说hi并注册。 3.服务器记录身份信息(用户名) 4.客户端1命令服务器呼叫客户端2 5.服务器告诉客户端2有呼叫信息。 6.客户端2接收呼叫。 7.客户端1和2直接交流。 我们模仿MDN的WebRTC交流实例来形成代码框架。 WebSocket信令服务器 发信号是两个浏览器之间的交互过程,我们使用了WebSockets来完成。 服务器部分和MDN的例子相同,只需复制。 我们做出了一些改变使它可以对now.sh项目工作。

WebRTC Native 源码导读(一):安卓相机采集实现分析

本文转载自个人博客,作者Piasy WebRTC 的代码量不小,一次性看明白不太现实,在本系列中,我将试图搞清楚三个问题: 客户端之间如何建立连接? 客户端之间如何实现数据传输? 音视频数据的采集、预览、编码、传输、解码、渲染完整流程。 本文是第一篇,我将从最熟悉的采集入手,分析一下 WebRTC-Android 相机采集的实现。 WebRTC-Android 的相机采集主要涉及到以下几个类:Enumerator,Capturer,Session,SurfaceTextureHelper。 其中 Enumerator 创建 Capturer,Capturer 创建 Session,实现对相机的操作,SurfaceTextureHelper 实现用 SurfaceTexture 接收数据。 Enumerator CameraEnumerator 接口如下: public interface CameraEnumerator { public String[] getDeviceNames(); public boolean isFront

WebRTC对等连接(一):点对点通信

原文标题:Learning WebRTC peer-to-peer communication, part 1 作者:Swizec Teller WebRTC对等通信 在之前的工作中,我们使用了区块链技术来实时共享客户端模块,本次我们用RTCPeerConnection建立了一个对等连接。 点击此处查看GitHub代码 自iOS11之后,WebRTC可以在所有浏览器中工作了,用户可以实时使用。 点击此处运行代码 我嵌入了一个HTML标签,浏览器的安全保护机制不允许这样做。 WebRTC提供了三种API: 从设备中获取音频和视频(mediastream) 建立了一个对等连接(RTCPeerConnection) 传递任意数据(RTCDataChannel) 本文使用了mediastream和PeerConnection. 无服务器的实时对等连接通信客户端 按照如下步骤在同一网页不同客户端之间建立连接 1.实例化两个RTCPeerConnection对象。 2.添加彼此为ICE candidates。 3.对第一个对象使用createoffer建立请求。 4.对两个对象设置本地/远程&#8