• Stars
    star
    506
  • Rank 87,236 (Top 2 %)
  • Language
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📚 WebRTC (Web Real-Time Communications) 中文教程

Alt



💐 实战和DEMO教程

必须要有摄像头,(笔记本和手机默认支持)

📘 支持的浏览器和平台

Chrome Firefox Opera Safari Android iOS
chrome firefox Opera apple android apple
Latest Latest Latest ✔ 11+ Latest 11+

WebRTC (Web Real-Time Communications) 是一项实时通讯技术,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。

它并不是单一的协议,包含了媒体、加密、传输层等在内的多个协议标准以及一套基于 JavaScript 的 API。通过简单易用的 JavaScript API ,在不安装任何插件的情况下,让浏览器拥有了 P2P音视频和数据分享的能力。同时WebRTC 并不是一个孤立的协议,它拥有灵活的信令,可以便捷的对接现有的SIP 和电话网络的系统。

WebRTC 内部结构

demo-01

架构图颜色标识说明:

  • 紫色部分是Web开发者API层
  • 蓝色实线部分是面向浏览器厂商的API层
  • 蓝色虚线部分浏览器厂商可以自定义实现

WebRTC有三个模块:

  • Voice Engine(音频引擎)

    • Voice Engine包含iSAC/iLBC Codec(音频编解码器,前者是针对宽带和超宽带,后者是针对窄带)
    • NetEQ for voice(处理网络抖动和语音包丢失)
    • Echo Canceler(回声消除器)/ Noise Reduction(噪声抑制)
  • Video Engine(视频引擎)

    • VP8 Codec(视频图像编解码器)
    • Video jitter buffer(视频抖动缓冲器,处理视频抖动和视频信息包丢失)
    • Image enhancements(图像质量增强)
  • Transport

    • SRTP(安全的实时传输协议,用以音视频流传输)
    • Multiplexing(多路复用)
    • P2P,STUN+TURN+ICE(用于NAT网络和防火墙穿越的)
    • 除此之外,安全传输可能还会用到DTLS(数据报安全传输),用于加密传输和密钥协商
    • 整个WebRTC通信是基于UDP的

WebRTC 的核心组件

  • 音视频引擎:OPUS、VP8 / VP9、H264

  • 传输层协议:底层传输协议为 UDP

  • 媒体协议:SRTP / SRTCP

  • 数据协议:DTLS / SCTP

  • P2P 内网穿透:STUN / TURN / ICE / Trickle ICE

  • 信令与 SDP 协商:HTTP / WebSocket / SIP、 Offer Answer 模型

WebRTC 音频和视频引擎

demo-01

  • 最底层是硬件设备,上面是音频捕获模块和视频捕获模块

  • 中间部分为音视频引擎。音频引擎负责音频采集和传输,具有降噪、回声消除等功能。视频引擎负责网络抖动优化,互联网传输编解码优化

  • 在音视频引擎之上是 一套 C++ API,在 C++ 的 API 之上是提供给浏览器的Javascript API     

WebRTC 协议栈

WebRTC协议栈

  • WebRTC 核心的协议都是在右侧基于 UDP 基础上搭建起来的

  • 其中,ICE、STUN、TURN 用于内网穿透, 解决了获取与绑定外网映射地址,以及 keep alive 机制

  • DTLS 用于对传输内容进行加密,可以看做是 UDP 版的 TLS。由于 WebRTC 对安全比较重视,这一层是必须的。所有WebRTC组件都必须加密,并且其JavaScript API只能用于安全源(HTTPS或本地主机)。信令机制并不是由WebRTC标准定义的,所以您必须确保使用安全协议。

  • SRTP 与 SRTCP 是对媒体数据的封装与传输控制协议

  • SCTP 是流控制传输协议,提供类似 TCP 的特性,SCTP 可以基于 UDP 上构建,在 WebRTC 里是在 DTLS 协议之上

  • RTCPeerConnection 用来建立和维护端到端连接,并提供高效的音视频流传输

  • RTCDataChannel 用来支持端到端的任意二进制数据传输

  • WebRTC 协议栈解释

    • ICE:互动式连接建立(RFC 5245)
    • STUN:用于NAT的会话遍历实用程序(RFC 5389)
    • TURN:在NAT周围使用继电器进行遍历(RFC 5766)
    • SDP:会话描述协议(RFC 4566)
    • DTLS:数据报传输层安全性(RFC 6347)
    • SCTP:流控制传输协议(RFC 4960)
    • SRTP:安全实时传输协议(RFC 3711)

🌺 JavaScript API

🌷 接口教程

源码或示例

📘 相关参考

More Repositories

1

lua-nginx-redis

🌺 Redis、Lua、Nginx、OpenResty 笔记和资料
Lua
999
star
2

golang-tutorial

💐 Golang 系列教程(译)
Go
220
star
3

RTMP-TS-DASH-WEBRTC

👾 音视频解决方案 Audio and video solutions(AV1)
156
star
4

dnmp

docker-compose部署LNMP环境 Nginx/Openresty、MySQL(5.7、8.0、8.1)、PHP7.4(8.0、5.6)、Redis5.0、PHPMyAdmin、Xdebug、RabbitMQ、Nacos
Shell
148
star
5

webman-admin

🚀 基于 webamn + vue3 + element-plus 的前后端分离解决方案
Vue
57
star
6

xpay

💰 微信/支付宝收款监控,个人收款无需签约支付宝、微信支付。为支付宝、微信支付的个人账户,提供即时到账收款服务
56
star
7

load-balancing

Implementing several load balancing scheduling algorithms with PHP - 用 PHP 实现几种负载均衡调度算法
PHP
49
star
8

docker-php-webman

docker-php-webman
Shell
42
star
9

openresty-project-v0.01

🌹 基于OpenResty编写一个MVC模式的WEB项目 V0.01
Lua
41
star
10

webman-jwt

🔑 An authentication(认证) library that supports JSON Web Token (JWT) for webman plugin
PHP
31
star
11

PHP-JAVA-SM4

基于PHP语言和Java语言的国密SM4算法库 。包含加密/解密,摘要算法的实现代码和测试方法 。
PHP
22
star
12

nacos-sdk-php

Nacos-Sdk-PHP for PHP client allows you to access Nacos OpenAPI, https://nacos.io/
PHP
20
star
13

webman-storage

the simple more file upload library for webman plugin
PHP
18
star
14

nginx-tutorial

Nginx 从入门到实践教程
17
star
15

linux-tutorial

📙 Linux 基础教程持续更新中...
17
star
16

webman-validate

the most awesome validation library for webman plugin
PHP
12
star
17

webman-limit-traffic

based on lua script limiting and controlling traffic for webman plugin
PHP
12
star
18

zephir-framework

🌷 用 zephir 给 PHP7 写动态链接库
Zephir
11
star
19

webman-casbin

An authorization library that supports access control models like ACL, RBAC, ABAC for webman plugin
PHP
10
star
20

storage

the simple more file upload library for webman plugin
PHP
9
star
21

webman-rpc

simple rpc service for webman plugin
PHP
9
star
22

webman-event

the event for webman plugin
PHP
8
star
23

webman-admin-ui

webman-admin-ui,https://tinywan.gitee.io/webman-admin-ui
Vue
7
star
24

webman-nacos

A PHP implementation of Nacos OpenAPI for webman plugin
PHP
7
star
25

github-actions-build-docker

Creating a Docker Image with GitHub Actions
Dockerfile
7
star
26

webman-exception

exception handler library for webman plugin
PHP
7
star
27

webman-permission

推荐使用插件 https://github.com/Tinywan/casbin
PHP
6
star
28

webman-captcha

base64 image verification captcha library for webman plugin
PHP
5
star
29

webman-weather

the GaoDe weather for webman plugin
PHP
4
star
30

antfin-php-sdk

蚂蚁金服 php-sdk
PHP
4
star
31

think-exception

exception handler library for ThinkPHP6.0 plugin library
PHP
4
star
32

ffmpeg-study-line

使用FFmpeg的记录
4
star
33

Yii2.0

🌷 学习,项目经验,基于Yii2.0框架的学习(Learning, project experience, based on Yii2.0 framework of learning.)
PHP
4
star
34

think-jwt

think-jwt
PHP
3
star
35

msg-system

基于workerman的直播间消息系统
PHP
3
star
36

blockchain

用GO语言构建自己的区块链
Go
3
star
37

webcodec

爆炸式Golang
CSS
2
star
38

util

php composer util
PHP
2
star
39

t_log

这是一个简单的python日志包
Python
2
star
40

py-blockchain

py-blockchain
Python
2
star
41

think-arms

ARMS 阿里云应用监控链路追踪 library for ThinkPHP6.0 plugin library
PHP
2
star
42

automated-test

自动化测试
Python
2
star
43

webman-soar

SQL Optimizer And Rewriter library for webman plugin
Smarty
2
star
44

notes

notes
JavaScript
1
star
45

webhooks

一个简单的web hooks,适用于个人自动部署项目
PHP
1
star
46

tinywan-react-app

JavaScript
1
star
47

gitalk

体验地址
1
star
48

docker-php-webman-micro

webman runtime
Shell
1
star
49

video.tinywan.com

video.tinywan.com
PHP
1
star
50

webrtc

webrtc
TypeScript
1
star
51

go-php-js-python-algorithm

使用 Go & PHP & JavaScript & Python 实现《十大经典排序算法》
1
star
52

windows10-K8S

windows10-K8S
PowerShell
1
star
53

composer-package-template

composer-package-template
PHP
1
star
54

Unix_Socket_Example

Unix Socket Example
PHP
1
star
55

meilisearch

a simple PHP library for the Meilisearch API
PHP
1
star
56

webman-lock

based on lua script redis lock for webman plugin
PHP
1
star
57

api-document

api-document docsify-themeable
1
star