█ 学习相关资料

2019-02-19【Android WebRTC完整入门教程

本项目GitHub地址/step1camera

2019-02-19 Android WebRTC完整入门教程01: 使用相机 - 简书

  • RTC(Real Time Communication): 实时通信
  • WebRTC: 基于web的实时通信
  • Signaling: 信令, 一些描述媒体或网络的字符串
  • SDP(Session Description Protocol): 会话描述协议, 主要描述媒体信息
  • ICE(Interactive Connectivity Establishment): 交互式连接建立
  • STUN(Session Traversal Utilities for NAT): NAT会话穿透工具
  • TURN(Traversal Using Relays around NAT): 中继穿透NAT

2019-02-20 Android WebRTC完整入门教程02: 本地回环

  • PeerConnection
    PeerConnection也就是Peer-to-Peer connection(P2P), 就是两个"人"的连接. 双方分别创建PeerConnection对象, 然后向对方发送自己的网络状况ICE和多媒体编码格式SDP(因为这时候连接还没建立, 所以发送内容是通过服务器完成的). 当双方网络和编码格式协商好后, 连接就建立好了, 这时从PeerConnection中能获取到对方的MediaStream数据流, 也就能播放对方的音视频了.

  • ICE
    Interactive Connectivity Establishment, 交互式连接建立. 其实是一个整合STUN和TURN的框架, 给它提供STUN和TURN服务器地址, 它会自动选择优先级高的进行NAT穿透.

  • SDP
    Session Description Protocol: 会话描述协议. 发送方的叫Offer, 接受方的叫Answer, 除了名字外没有区别. 就是一些文本描述本地的音视频编码和网络地址等.

  • 主要流程
    A(local)和B(remote)代表两个人, 初始化PeerConnectionFactory并分别创建PeerConnection , 并向PeerConnection 添加本地媒体流.

A创建Offer
A保存Offer(set local description)
A发送Offer给B
B保存Offer(set remote description)
B创建Answer
B保存Answer(set local description)
B发送Answer给A
A保存Answer(set remote description)
A发送Ice Candidates给B
B发送Ice Candidates给A
A,B收到对方的媒体流并播放

2019-02-20 Android WebRTC完整入门教程03: 信令

  • 信令服务器, 其实就是用来给双方交换信息, 并不需要对信息进行处理. 因此服务器和信息的数据格式都可以自己选择,
  • STUN服务器用于寻找客户端的公网IP, 让两个服务端通过公网IP直接发送音视频数据, 这些数据不经过STUN服务器. 因此STUN服务器的数据流量很小, 免费的服务器很多. 不保证所有情况下都能建立WebRTC连接.
  • TURN服务器用于直接转发音视频数据, 当客户端网络情况特殊, 无法相互发送数据时. 经过它的数据量很大, 基本没有免费的. 只要客户端能访问到TURN服务器就能建立WebRTC连接.
  • STUN与TURN的区别就在于 R-Relay-转发, 需要转发音视频数据的就是TURN服务器.

2019-02-20 Android WebRTC完整入门教程04: 多人视频

  • 多人视频有三种理论方案, 分别是Mesh,SFU,MCU.

  • Mesh 网格, 每个人都跟其他人单独建立连接. 4个人的情况下, 每个人建立3个连接, 也就是3个上传流和3个下载流. 此方案对客户端网络和计算能力要求最高, 对服务端没有特别要求.

  • SFU(Selective Forwarding Unit) 可选择转发单元, 有一个中心单元, 负责转发流. 每个人只跟中心单元建立一个连接, 上传自己的流, 并下载别人的流. 4个人的情况下, 每个人建立一个连接, 包括1个上传流和3个下载流. 此方案对客户端要求较高, 对服务端要求较高.

  • MCU(Multipoint Control Unit) 多端控制单元, 有一个中心单元, 负责混流处理和转发流. 每个人只跟中心单元建立一个连接, 上传自己的流, 并下载混流. 4个人的情况下, 每个人建立一个连接, 包括1个上传流和1个下载流. 此方案对客户端没有特别要求, 对服务端要求最高

2019-03-03 Android字符串相机
2019-10-21 开始使用Android CameraX

2015-11-13【期刊】 基于WebRTC的Android移动端无线视频传输

  • WebRTC是Google于2011年6月3日开源的即时通讯项目。它是一个支持网页浏览器进行实时语音对话或视频对话的技术,其出现可以帮助Web浏览器、个人电脑或手机实现实时多媒体通信功能。WebRTC提供了各种实现视频会议的核心技术,包括音视频的采集、编解码、信号优化和处理以及网络传输等。

  • 系统设计主要包含三个部分:音视频模块、信令服务和打洞服务。

  • 音视频模块包含一系列音频多媒体处理的框架,包括从视频采集卡到网络传输端等整个解决方案。

  • 信令服务的作用是在通信双方都不知道对方的IP以及端口的情况下建立连接。由服务器建立连接来实现。
    具体的连建方式由一种叫 JSEP的协议来规定,JSEP将客户端之间传递的信令分为两种:offer 信令和answer信令。它们主要内容的格式都遵循会话描述协议 (Session Description Protocal,SDP)。 通过 offer和 answer交换SDP描述符,流程如下:
    (1)A和B双方建立一个RTCPeerConnection实例。
    (2)A通过 createOffer()方法建立一个包含A的SDP描述符的offer 信令。
    (3)A通过 setLocalDescription()方法,将 A的 SDP描述符交给A的RTCPeerConnection 实例.
    (4)A将offer信令通过服务器发送给B。
    (5)B将A的 offer信令中所包含的SDP描述符提取出来,并通过setRemoteDescription ()方法交给B 的RTCPeerConnection实例。
    (6)B通过createAnswer()方法建立一个包含B的SDP描述符的answer 信令。
    (7)B通过 setLocalDescription()方 法 将B的SDP 描述符交给B的RTCPeerConnection 实例.
    (8)B将answer信令通过服务器发送给A。
    (9)A接收到B的answer信令后,将其中B的SDP描述符提取出来,调用setRemoteDescripttion()方法交给B的RTCPeerConnection实例。
    通过这一系列的信令交换之后,A和B所创建的RTCPeerConnection实例都包含了A和B的SDP描述符了。

  • 打洞服务为了获取连接两端设备的网络地址。要实现P2P视频传输。
    主要就是通过STUN服务器获取自己的IP、Port及NAT信息,然后通过信令服务器交换这些信息,最后两客户端根据各自得到的IP、Port、NAT信息进行相应的穿透。
    (1)A通过公共IP与服务器建立连接。
    (2)A发送一个加入某房间的信令,并设置房间号,信令中需要包含该房间的编号。
    (3)若有新用户B加入,B会向服务器发送一个请求信令(new_peer),信令中包
    含新加入的用户B的信息以及房间号。
    (4)若房间号相同,则建立A和B的通信连接。

2021-04-30 WebRtc学习之旅 —— Android端应用开发

2021-04-30 WebRtc学习之旅 —— Android端应用开发
AndroidRTC

  1. 在访问外网的时候,需要知道对方的ip + port,我们才能访问到指点的设备。而A和B在它们各自的路由局域网内,是不知道这个ip+port,它们各自的ip+port 是由路由分配的,这个分配ip+port,有个专业的名词,就是NAT,即网络地址转换
    2.A 和 B 分别向stun服务器发送请求,stun服务器会返回他们各自的ip+port
    3.turn服务器是个中转站,A和B 之间通信的所有媒体流,都是经过turn服务器进行转发的。
    4.采用stun还是turn服务器,由ICE来帮助我们决策
    5.简单的stun服务器、信令服务器的搭建,后面根据需要还要搭建turn服务器;

2021-07-30 webrtc源码分析(5)-Api接口 - woder - 博客园

2021-07-30 webrtc源码分析(5)-Api接口 - woder - 博客园
通话的流程

PeerConnectionFactory::CreatePeerConnection()  //  创建Pc
	
PeerConnection::CreateAudioTrack() // 创建音轨
PeerConnection::AddTrack()		   // 添加音轨
PeerConnection::CreateVideoTrack() // 创建视轨
PeerConnection::AddTrack()		   // 添加视轨

PeerConnection::CreateOffer()	   		// 创建offer sdp
PeerConnection::SetLocalDescription()	// 设置local sdp
send sdp to peer...						// 将sdp发送给对端
-----------------------------------------------------------
receive remote sdp...					// 收到对端的sdp
PeerConnection::SetRemoteDescription()	// 设置remote sdp
//PeerConnection::OnAddTrack()		   // 添加远端视轨
//PeerConnection::CreateAnswer()	   		// 创建offer sdp
//PeerConnection::SetLocalDescription()	// 设置local sdp
//send sdp to peer...						// 将sdp发送给对端

OnIceCandidate()					// ice candidate收集到了
send candidate to peer...			// 发送给对端
------------------------------------------------------------
receive remote candidate...			// 收到对端的ice candidate
PeerConnection::AddIceCandidate()	// 设置到pc中

2024-03-07 Android webrtc使用USB摄像头

2024-03-07 Android webrtc使用USB摄像头-CSDN博客

2025-04-29 Android实现视频通话(附带源码)_android webrtc

2025-04-29 Android实现视频通话(附带源码)_android webrtc-南城花随雪。-CSDN博客

第三方 SDK 对比
Agora/腾讯云/阿里云:提供更高层封装,内置信令与跨平台适配
WebRTC 原生:免费、可深度定制,但需自行搭建信令与 TURN 服务

2025-05-02 Android实现WebRTC的android端互连(附带源码)_android webrtc

2025-05-02 Android实现WebRTC的android端互连(附带源码)_android webrtc-CSDN博客

双端互连:两部 Android 设备加入同一房间,相互看到对方摄像头画面并听到对方音频
0.IceServer 列表包含 STUN(候选发现)与 TURN(中继)服务器
1.集成 Google WebRTC 原生库
2.建立信令通道(使用 WebSocket、Socket.IO、RESTful+Long Polling 等进行 SDP 与 ICE 候选交换)
3.完成两台 Android 设备之间互连
4.传输并渲染实时视频流与音频流
5.管理 ICE 候选、SDP 协商、网络变化
6.处理会话断开与重连
7.封装复用模块,支持多房间、多对多通话

WebRTC 核心组件
PeerConnectionFactory:工厂,用于创建音视频捕获器、编码器与 PeerConnection
PeerConnection:负责底层 ICE 协商、NAT 穿透与媒体传输
VideoCapturer + VideoTrack:采集摄像头并编码发送
SurfaceViewRenderer:渲染远端与本地视频
AudioTrack:采集与播放音频
PS:WebRTC 在内部使用 EglBase.Context、SurfaceViewRenderer 要在 UI 线程操作,协商和 I/O 可在后台线程

依赖库:
dependencies {
// WebRTC 原生库
implementation ‘org.webrtc:google-webrtc:1.0.32006’
// WebSocket 客户端
implementation ‘com.squareup.okhttp3:okhttp:4.10.0’
}

2025-12-29 WebRTC Android 视频通话开发终极指南:快速集成高质量实时通信功能

2025-12-29 WebRTC Android 视频通话开发终极指南:快速集成高质量实时通信功能-CSDN博客

什么是WebRTC Android项目?
WebRTC Android是一个基于Google WebRTC技术的开源项目,专门为Android平台优化。它提供了完整的视频通话和视频会议解决方案,支持一对一通话和多用户会议场景。

如图展示了WebRTC点对点通信的完整流程,包含客户端、STUN服务器和信令服务器的协同工作。通过SDP交换和ICE候选者发现,系统能够在复杂的网络环境下建立稳定的视频连接。

WebRTC 视频通话 视频会议 视频通话demo(局域网测试可用):webrtc_androidt
在这里插入图片描述

2023-03-13 Android 音视频开发实践系列-04-Android WebRTC推流到SRS服务器实现直播功能

2023-03-13 Android 音视频开发实践系列-04-Android WebRTC推流到SRS服务器实现直播功能-CSDN博客

Android使用webrtc推拉流播放demo:WebRTCTest

  1. 最近项目用到WebRTC来替换RTMP推流功能,原因是RTMP延迟太高不满足需求
  2. 部署SRS服务器:SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181。
  3. 播放卡住的问题:笔者实际测试发现,即便在局域网内,拉流播放也会出现卡死的问题。具体原因,笔者暂未查明,后续如有解决方案会另外写一篇文章阐述。

2025-03-30 Android 版 WebRTC 入门 — 轻松开发视频通话APP

2025-03-30 Android 版 WebRTC 入门 — 轻松开发视频通话APP! - 声网

2025-06-18 大疆无人机的低延迟图传,是怎么做到的?

2025-06-18 大疆无人机的低延迟图传,是怎么做到的? - 声网

现实中,大疆等无人机厂商往往采用专用数字图传技术(如 OcuSync 等)来保证视距内的图传效果。这类自组网链路在短距离内确实能实现低延时传输,但其覆盖范围有限,一旦无人机飞出图传距离,或者需要将画面传输给远端多个用户,就必须借助公网。此时,上述移动网络的瓶颈问题就暴露无遗:网络体验保障难、延迟高、卡顿丢帧等现象屡见不鲜。可以说,网络链路的不确定性是无人机实时视频业务最大的拦路虎。
针对上述难题,业界领先的无人机厂商大疆创新选择与专业的 RTC 服务商深度合作,探索通过云端实时音视频来增强无人机的传输能力。近期,大疆正式开放了其无人机的“上云 API”,并经过严格测试后将声网的实时音视频作为推荐标准接入方案。简单来说,开发者可以通过调用大疆提供的云 API 接口,将声网的音视频 RTC 传输协议集成到无人机应用中,使无人机具备即时直播、实时画面传输、指令下发调度等能力。

2022-09-19【流媒体Mediasoup】 Android项目中使用 Mediasoup-client 并和Web端 服务端通信

【流媒体Mediasoup】 Android项目中使用 Mediasoup-client 并和Web端 服务端通信 (七)

2026-01-25 从 NAT 到信令:一篇看懂 WebRTC 全流程

从 NAT 到信令:一篇看懂 WebRTC 全流程

2026-04-18 xrdp - 开源远程桌面服务器?

xrdp - 开源远程桌面服务器
xrdp 提供了一个使用微软远程桌面协议(RDP)对远程计算机进行图形化登录的功能。xrdp 支持多种 RDP 客户端:

FreeRDP
rdesktop
KRDC
NeutrinoRDP
Windows MSTSC(微软终端服务客户端,即 mstsc.exe)
微软远程桌面(可在微软商店找到,与 MSTSC 不同)
其中许多在Windows、Mac OS、iOS和/或Android上都能工作。

webrtc-ice测试网址

WebRTC samples Trickle ICE 测试网页
WebRTC samples Trickle ICE 项目
Getting Started | WebRTC

其他

在这里插入图片描述

Logo

火山引擎视频云技术社区,是面向 AI 音视频开发者的技术交流平台。这里汇聚源自抖音、豆包等亿级 DAU 产品的 RTC、直播、点播、AI 媒体处理、音视频互动技术,提供接入指南、最佳实践、性能调优、场景案例、Demo 代码、开源项目、白皮书和 API 文档。社区汇聚官方工程师与一线开发者,为 AI 视频通话、数字人、AI 视频处理等应用的开发与落地提供技术支持。

更多推荐