美文网首页
WebRTC研究 (二) 实例demo

WebRTC研究 (二) 实例demo

作者: 孔雨露 | 来源:发表于2019-10-18 08:56 被阅读0次

    @[TOC](WebRTC研究 (二) 实例demo)

    1. WebRTC 简介

    webrtc官网
    webrtc对iOS使用的说明

    2.WebRTC 获取视频流Demo

    2.1 WEBRTC结构

    2.1.1 完整的WebRTC框架,分为 Server端、Client端两大部分。

    • Server端:
      Stun服务器 : 服务器用于获取设备的外部网络地址
      Turn服务器 : 服务器是在点对点失败后用于通信中继
      信令服务器 : 负责端到端的连接。两端在连接之初,需要交换信令,如sdp、candidate等,都是通过信令服务器 进行转发交换的。
    • Client有四大应用端:
      Android iOS PC Broswer

    2.1.2 介绍下WebRTC三个主要API,以及实现点对点连接的流程。

    1. MediaStream:通过MediaStream的API能够通过设备的摄像头及话筒获得视频、音频的同步流
    2. RTCPeerConnection:RTCPeerConnection是WebRTC用于构建点对点之间稳定、高效的流传输的组件
    3. RTCDataChannel:RTCDataChannel使得浏览器之间(点对点)建立一个高吞吐量、低延时的信道,用于传输任意数据。
      其中RTCPeerConnection是我们WebRTC的核心组件。

    WEBRTC的建立连接流程图

    webrtc流程图.png

    2.1.3 整个webrtc连接的流程说明

    其主要流程如上图所示, 具体流程说明如下:

    1. 客户端通过socket, 和服务器建立起TCP长链接, 这里我用了CocoaAsyncSocket第三方框架进行socket连接https://github.com/robbiehanson/CocoaAsyncSocket
    2. 客户端通过信令服务器, 进行offer SDP 握手

    SDP(Session Description Protocol):描述建立音视频连接的一些属性,如音频的编码格式、视频的编码格式、是否接收/发送音视频等等
    SDP 是通过webrtc框架里面的PeerConnection所创建, 详细创建请参考我的demo.

    3.客户端通过信令服务器, 进行Candidate 握手

    Candidate:主要包含了相关方的IP信息,包括自身局域网的ip、公网ip、turn服务器ip、stun服务器ip等
    Candidate 是通过webrtc框架里面的PeerConnection所创建, 详细创建请参考我的demo.

    1. 客户端在SDP 和Candidate握手成功后, 就建立起一个P2P端对端的链接, 视频流就能直接传输, 不需要经过服务器啦.

    2.1.4 SDP握手流程和Candidate握手流程类似, 但有点繁琐, 下面就SDP握手流程简要说明:

    SDP握手流程.png

    2.1.5 用一个demo演示能很好的帮助大家对整套webrtc音视频通信的梳理:

    综合分析了国内外相对比较好的几个demo, 吸取了各自的优点, 现给大家分享. (*国内的很多demo代码质量相对较差而且很多都运行不起来, 多数用OC开发, 国外的相对较好)

    相关文章

      网友评论

          本文标题:WebRTC研究 (二) 实例demo

          本文链接:https://www.haomeiwen.com/subject/xunbmctx.html