WebRTC开发者社区为开发者提供最新最全的WebRTC资料
目录
  • 首页
  • WebRTC概念与基础
  • WebRTC项目与应用
  • WebRTC教程资料
  • WebRTC开发资源
  • WebRTC源码分析
  • WebRTC服务端开发
  • WebRTC网络与通信
  • WebRTC编码与解码
  • WebRTC问题与缺陷
  • WebRTC-Androd端开发
  • WebRTC-RFC文档
  • WebRTC音频处理
  • WebRTC-Mediasoup
  • FFMpeg音视频处理
  • H264编解码基础
  • openCV相关

WebRTC加深理解 - 会话流程

2019-11-22 15:08:33

基于ios native api自己写客户端得出的大概流程,WebRTC的API接口和例子都是oc版本,因为我最讨厌最恶心的语言就是oc,所以我使用swift来编写客户端。我本身不是搞ios开发的,以前稍微用过oc,至于swift前段时间看过一点,现学现卖,就是转换oc的过程实在是折磨死我了。

音视频客户端会话的整体流程
WebRTC主要是客户端技术,尽量使用p2p点对点流媒体传输。
一开始WebRTC客户端先去连接ICE Server,也就是STUN Server或者TURN Server。
客户端连接STUN Server是为了测试出自己的NAT类型。
TURN Server包含了STUN Server的功能而且包含Relay中转功能。
当一个WebRTC客户端创建RTCPeerConnection并且设置好ICE和本地Audio Track、Video Track以后,会自动向ICE服务器发出测试然后得到ice candidate
客户端把得到的candidate使用自己的信令服务器发送给另一个要通讯的客户端,对方收到candidate后加入到RTCPeerConnection中。
<请求客户端>使用RTCPeerConnection发出offer请求,得到自己的sdp,然后通过信令服务器发给<被请求客户端>
<被请求客户端>收到offer以后调用RTCPeerConnection.setRemoteDescription加入remote sdp,然后调用RTCPeerConnection.answerForConstraints和setLocalDescription得到自己的sdp并且后台跟ice服务器通讯异步获得自己的candidate,再将自己的sdp和candidate分别通过信令发回给<请求客户端>,<请求客户端>收到sdp后也调用RTCPeerConnection.setRemoteDescription加入remote sdp,收到candidate也加入RTCPeerConnection。
WebRTC客户端在背后线程中自行完成流媒体传输。至于WebRTC内部代码的运行流程,以后再慢慢分析。
在这个流程中的信令服务器,跟业务关联较深,相当于IM服务器。我是打算采用MQTT协议来做IM,采用开源的mosquitto服务器。
TURN服务器使用开源的coTurn自已架设。
SDP
SDP是一种会话描述格式,描述了客户端本机的媒体信息,比如支持的音视频编解码的。SDP协议是基于文本的协议,打印WebRTC中的sdp可以看出是一个很长的字符串,内部使用\r\n换行。
想知道SDP的详细知识可以参考 SDP协议介绍
如果想再研究深入一点再配合相关的RFC标准文档。

By:webrtc | WebRTC概念与基础 |

  • 分类目录

    • WebRTC概念与基础 (253)
    • WebRTC项目与应用 (35)
    • WebRTC教程资料 (39)
    • WebRTC开发资源 (13)
    • WebRTC源码分析 (19)
    • WebRTC服务端开发 (29)
    • WebRTC网络与通信 (43)
    • WebRTC编码与解码 (15)
    • WebRTC问题与缺陷 (2)
    • WebRTC-Androd端开发 (2)
    • WebRTC-RFC文档 (1)
    • WebRTC音频处理 (6)
    • WebRTC-Mediasoup (2)
    • FFMpeg音视频处理 (3)
    • H264编解码基础 (10)
    • openCV相关 (1)
  • 最新文章

    • WebRTC CDN 实现
    • WebRTC Insertable Stream 初探与 WebRTC"管道化"
    • 基于WebRTC构建超低延迟(500ms)的直播系统
    • 基于RTMP和WebRTC开发大规模低延迟(1000毫秒内)直播系统
    • WebRTC 媒体服务器中使用单端口
    • WebRTC编译国内加速镜像
    • TensorFlow 中的通信机制 ——Rendezvous(二)gRPC 传输
    • 详解|SRT编码器中Rendezvous模式详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • 完整SIP/SDP媒体协商概论-ICE初始offer发送详解
    • WebRTC - ICE 过程简述
    • Webrtc delay-base-bwe代码分析(2): InterArrival模块
    • 从janus中学习webrtc的ice简单交换过程
    • WebRTC PeerConnection 建立连接过程介绍
    • P2P技术详解(三):P2P技术之STUN、TURN、ICE详解(转载)
    • WebRTC ICE 状态与提名处理
    • licode服务端总结
    • libnice调用流程分析
    • libnice调用流程分析
    • licode 学习总结
    • Licode—基于webrtc的SFU/MCU实现
    • ncnn_example
    • opencv-rtsp运动检测
    • WebRTC 基于GCC的拥塞控制(上)
    • WebRTC 基于GCC的拥塞控制(下)
    • LearningWebRTC: 拥塞控制LearningWebRTC: 拥塞控制
    • WebRTC入门(三)---- 目录结构
    • WebRTC之带宽控制部分学习(1) ------基本demo的介绍
    • webrtc视频流程
    • webrtc nack实现原理
  • 链接

    • WebRTC官网
    • xSky 实验室
    • 树莓派技术圈
    • 声网 Agora
    • WebRTC中文网
    • web性能权威指南
    • WebRTC官网
    • webrtc在线源码
    • webrtc在线源码
    • webrtc
    • webrtc示例
    • LiveVideoStack
    • 雷霄骅(leixiaohua1020)的专栏
  • 开源项目


Powered By xblog Copyright 0xsky.com All Rights Reserved.

Copyright WebRTC.ren All Rights Reserved.