@[TOC](WebRTC研究 (二) 实例demo)
1. WebRTC 简介
2.WebRTC 获取视频流Demo
2.1 WEBRTC结构
2.1.1 完整的WebRTC框架,分为 Server端、Client端两大部分。
- Server端:
Stun服务器
: 服务器用于获取设备的外部网络地址
Turn服务器
: 服务器是在点对点失败后用于通信中继
信令服务器
: 负责端到端的连接。两端在连接之初,需要交换信令,如sdp、candidate等,都是通过信令服务器 进行转发交换的。 - Client有四大应用端:
AndroidiOS
PC Broswer
2.1.2 介绍下WebRTC三个主要API,以及实现点对点连接的流程。
-
MediaStream
:通过MediaStream的API能够通过设备的摄像头及话筒获得视频、音频的同步流 -
RTCPeerConnection
:RTCPeerConnection是WebRTC用于构建点对点之间稳定、高效的流传输的组件 -
RTCDataChannel
:RTCDataChannel使得浏览器之间(点对点)建立一个高吞吐量、低延时的信道,用于传输任意数据。
其中RTCPeerConnection
是我们WebRTC的核心组件。
WEBRTC的建立连接流程图
webrtc流程图.png2.1.3 整个webrtc连接的流程说明
其主要流程如上图所示, 具体流程说明如下:
- 客户端通过socket, 和服务器建立起TCP长链接, 这里我用了
CocoaAsyncSocket
第三方框架进行socket连接https://github.com/robbiehanson/CocoaAsyncSocket - 客户端通过信令服务器, 进行offer SDP 握手
SDP
(Session Description Protocol):描述建立音视频连接的一些属性,如音频的编码格式、视频的编码格式、是否接收/发送音视频等等
SDP
是通过webrtc框架里面的PeerConnection
所创建, 详细创建请参考我的demo
.
3.客户端通过信令服务器, 进行Candidate 握手
Candidate
:主要包含了相关方的IP信息,包括自身局域网的ip、公网ip、turn服务器ip、stun服务器ip等
Candidate
是通过webrtc框架里面的PeerConnection
所创建, 详细创建请参考我的demo
.
- 客户端在SDP 和Candidate握手成功后, 就建立起一个P2P端对端的链接, 视频流就能直接传输, 不需要经过服务器啦.
2.1.4 SDP握手流程和Candidate握手流程类似, 但有点繁琐, 下面就SDP握手流程简要说明:
SDP握手流程.png
2.1.5 用一个demo演示能很好的帮助大家对整套webrtc音视频通信的梳理:
综合分析了国内外相对比较好的几个demo, 吸取了各自的优点, 现给大家分享. (*国内的很多demo代码质量相对较差而且很多都运行不起来, 多数用OC开发, 国外的相对较好)
网友评论