WebRTC
引言
WebRTC 简介
WebRTC(Web Real-Time Communication)是一个支持网页和移动端进行实时音视频通信的开源项目,由 Google 发起。它提供了 点对点(Peer-to-Peer)音视频通话、数据通道传输 等功能,无需额外插件即可在浏览器和移动应用中实现实时通信。
WebRTC 的核心组件包括:
- MediaStream / MediaTrack:捕获和管理本地音视频流。
- PeerConnection:实现点对点连接,负责音视频数据的传输和网络穿透。
- DataChannel:支持点对点的数据传输,可用于文件、消息或控制信息。
- ICE / STUN / TURN:实现 NAT 穿透和可靠的连接建立。
WebRTC 的特点:
- 低延迟实时通信(一般延迟在几十毫秒到几百毫秒)
- 开源免费,跨平台支持(Web、Android、iOS)
- 提供强大的加密和安全机制(SRTP、DTLS)
Android 上使用 WebRTC 的优势
在 Android 平台上使用 WebRTC 开发音视频应用具有以下优势:
- 跨平台兼容性 WebRTC 提供统一的 API,Android、iOS 和 Web 端可以实现互通。
- 无需第三方插件 与传统的实时通信方案相比,WebRTC 不依赖外部 SDK 即可完成音视频通信,减少了依赖和安全风险。
- 高性能与低延迟 Android WebRTC SDK 对音视频采集、编码、传输和渲染进行了优化,可实现流畅的实时通信体验。
- 灵活的网络支持 内置 ICE、STUN、TURN 支持 NAT 穿透,能够在复杂网络环境下稳定连接。
- 丰富的功能扩展性 支持多人通话(Mesh/SFU)、数据通道、屏幕共享、视频特效等高级功能,可满足各种业务需求。
文档目标与适用人群
文档目标: 本指南旨在帮助开发者快速理解并掌握在 Android 平台上使用 WebRTC 开发实时音视频应用的流程,包括:
- 环境搭建与依赖管理
- 基础音视频通话实现
- 信令交互与网络处理
适用人群:
- Android 开发工程师:有一定 Android 开发基础,希望在应用中集成实时音视频功能。
- RTC 技术爱好者:想了解 WebRTC 原理及在移动端的实现方式。
- 产品/架构设计人员:需要评估 WebRTC 在移动端应用中的可行性和优势。
基础概念
PeerConnection
PeerConnection 是 WebRTC 的核心,用于在两个端点之间建立 点对点(P2P)连接,负责音视频数据和数据通道的传输。
主要功能:
- 管理本地和远程的音视频轨道(MediaStream/Track)
- 处理网络连接与 NAT 穿透(ICE、STUN、TURN)
- 发送和接收 SDP 信息(Offer/Answer)
- 支持数据通道(DataChannel)
SDP(Session Description Protocol)
SDP 是 WebRTC 中用于 描述媒体会话信息 的协议,包括媒体格式、编解码器、网络参数等。
主要作用:
- 协商音视频编码格式
- 传递 ICE Candidate 信息
- 在 Offer/Answer 流程中交换连接信息
ICE Candidate
ICE(Interactive Connectivity Establishment)用于 帮助端点穿透 NAT/防火墙建立连接。
概念:
- Candidate:候选网络地址(IP + 端口),可通过 STUN/TURN 获取
- 在 PeerConnection 中,ICE Candidate 会不断收集并发送给对端
- 对端收到 Candidate 后添加到自己的 PeerConnection
理解:统一 STUN 和 TURN,自动选择最佳连接路径,ICE 就是连接策略的“大脑”,让连接尽量 P2P,如果不行才走 TURN。
STUN (Session Traversal Utilities for NAT)
- 作用:帮助客户端获取自己在公网的 IP 和端口。
- 原理:
- 客户端向 STUN 服务器发送请求
- STUN 服务器返回公网可访问的 IP:port
- 用途:尽量使用 P2P 直连,减少中继服务器负载。
TURN (Traversal Using Relays around NAT)
- 作用:当 P2P 直连失败时,通过中继服务器转发流量。
- 特点:
- 可靠,但带宽成本高
- 可以保证复杂 NAT 或防火墙环境下通信
- 注意:通常部署在云服务器,需要足够带宽。
信令
信令(Signaling)是 建立 WebRTC 连接的前置通信机制,用于交换 SDP、ICE Candidate 等信息。
特点:
- WebRTC 本身不定义信令协议,开发者可自由选择实现方式
- 常用方式:WebSocket、HTTP、Socket.IO
- 信令流程一般包括:
- 客户端 A 发送 Offer 给信令服务器
- 服务器转发给客户端 B
- 客户端 B 回复 Answer
- 双方交换 ICE Candidate
DataChannel
- WebRTC 不只是音视频,还可以传输任意二进制数据(文件、游戏数据等)
- 特性:
- P2P 低延迟
- 类似 TCP/UDP(可选可靠性)