WebRTC基础实践 - 1. WebRTC简介

简介:

WebRTC 是一个开源的实时通信项目, 主要目标是对Web/原生App平台上的语音、视频、以及数据传输等实时通讯提供支持。

WebRTC 主要包括以下 JavaScript API(点击链接可查看相关demo)。

WebRTC的平台支持情况

目前, PC版和Android版的 Firefox、Opera 和 Chrome 浏览器都支持WebRTC。 此外、iOS和Android的一些原生App也支持WebRTC。

译者注: 国内使用量巨大的360浏览器、搜狗浏览器兼容性基本和Chrome一致。当然, 推荐使用最新的版本(当前时间: 2018年6月28日)。

信令(signaling)

WebRTC 通过 RTCPeerConnection 在浏览器之间进行流数据传输, 但还需要一种机制, 来协调通信以及发送控制指令, 这个过程就叫做信令控制. WebRTC 没有规定具体使用的协议或方法。

在本教程中, 我们使用 Socket.IO 来传递消息, 当然也可以使用 其他实现

STUN和TURN简介

WebRTC 是基于点对点(peer-to-peer)网络设计的, 在理想环境中, 双方通过路由器进行直连. 但在现实世界中, 两个客户端之间, 需要穿透防火墙以及 NAT 网关, 如果直连失败, 则需要回退降级。所以, 为了应对各种复杂的网络环境, WebRTC API 需要使用 STUN 服务器的帮助, 来获取双方的公网IP, 如果对等连接失败, 则需要使用 TURN 服务器作为中继服务器. 现实世界中的网络环境是什么样子的呢, 请参考 WebRTC in the real world

WebRTC的安全性

WebRTC的所有组件强制加密. 相关的JavaScript API也只能在安全的域名中使用(即 HTTPS 或者 localhost). 但WebRTC标准没有指定信令机制, 所以需要开发者确保使用了安全传输协议。

更多信息和资源, 请参考: http://webrtc.org/start

相关词汇对照:

  • capture : 获取、抓取
  • audio : 音频
  • video : 视频
  • stream : 流
  • data stream : 数据流
  • record : 录制、记录
  • signaling : 信令
  • Encryption : 加密
  • relay server : 中继服务器
  • peer-to-peer: 点对点网络

原文链接: https://codelabs.developers.google.com/codelabs/webrtc-web/#0

翻译人员: 铁锚 - https://blog.csdn.net/renfufei

翻译日期: 2018年06月28日

目录
相关文章
|
SQL 数据采集 数据可视化
需求:公司需要做数据迁移同步,以下是几种常见的ETL工具选型对比
需求:公司需要做数据迁移同步,以下是几种常见的ETL工具选型对比
|
编译器 Python Windows
解决jupyter以及windows系统中pycharm编译器画图的中文乱码问题大全
解决jupyter以及windows系统中pycharm编译器画图的中文乱码问题大全,我们在jupyter的notebook中使用matplotlib画图的时候,经常性的会遇见一些中文乱码显示□的情况,如下所示:
1051 0
解决jupyter以及windows系统中pycharm编译器画图的中文乱码问题大全
|
7月前
|
网络协议
为何UDP协议不可靠?DNS为何选择UDP?
总的来说,UDP和TCP各有优势,选择哪种协议取决于应用的具体需求。UDP可能不如TCP可靠,但其简单、快速的特性使其在某些场景下成为更好的选择。而DNS就是这样的一个例子,它利用了UDP的优势,以实现快速、高效的名字解析服务。
396 14
|
10月前
|
监控 关系型数据库 MySQL
性能调优:避免SELECT *,仅查询需要的字段减少数据传输
在数据库性能调优中,`SELECT *`虽简便但不推荐。它会增加数据传输开销、降低查询优化器效率、影响代码可维护性,并可能成为性能瓶颈。明确指定查询字段能显著减少数据传输量、提升响应速度、优化执行计划并提高代码质量。通过实际案例对比,优化后的查询可减少60%的数据传输量,缩短40%的响应时间。建议养成明确字段查询的习惯,避免性能问题。
403 54
|
存储 网络协议 Ubuntu
【Linux开发实战指南】基于UDP协议的即时聊天室:快速构建登陆、聊天与退出功能
UDP 是一种无连接的、不可靠的传输层协议,位于IP协议之上。它提供了最基本的数据传输服务,不保证数据包的顺序、可靠到达或无重复。与TCP(传输控制协议)相比,UDP具有较低的传输延迟,因为省去了建立连接和确认接收等过程,适用于对实时性要求较高、但能容忍一定数据丢失的场景,如在线视频、语音通话、DNS查询等。 链表 链表是一种动态数据结构,用于存储一系列元素(节点),每个节点包含数据字段和指向下一个节点的引用(指针)。链表分为单向链表、双向链表和循环链表等类型。与数组相比,链表在插入和删除操作上更为高效,因为它不需要移动元素,只需修改节点间的指针即可。但访问链表中的元素不如数组直接,通常需要从
549 2
|
Kubernetes 搜索推荐 API
|
人工智能 算法 前端开发
阿里通义灵码的最佳实践
上周首次尝试了阿里巴巴的通义灵码AI插件,体验良好。该插件体积适中,约5.8M,适合项目开发使用。其@workspace和@terminal功能强大,能快速帮助开发者熟悉新项目结构,提供智能代码导航、搜索、优化及错误提示等服务,显著提升开发效率与代码质量。实践证明,通义灵码在加速项目理解和新需求实现方面表现出色,是开发者的得力助手。
529 1
阿里通义灵码的最佳实践
|
人工智能 算法 数据挖掘
技术沙龙直播|3D-Speaker多模态说话人开源详解
技术沙龙直播|3D-Speaker多模态说话人开源详解
|
网络协议 安全 Java
Wireshark抓取Android数据包
Wireshark抓取Android数据包
2590 0
|
Oracle 关系型数据库 数据库
实时计算 Flink版操作报错合集之错误信息"ORA-65040: operation not allowed from within a pluggable database"如何解决
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
769 2