专栏首页IMWeb前端团队WebRTC直播技术(一)-初探WebRTC

WebRTC直播技术(一)-初探WebRTC

本文作者:IMWeb jaychen 原文出处:IMWeb社区 未经同意,禁止转载

什么是WebRTC

  • webrtc 是为浏览器之间提供实时数据传输(Web Real-Time Communication)的javascript API
  • 支持 peer-to-peer 音频、视频、数据流传输能力

兼容性

主要的API

  • getUserMedia : 获取音视频
  • MediaRecorder: 录制音视频
  • RTCPeerConnection: 浏览器之间音视频流连接对象
  • RTCDataChannel: 浏览器数据流连接对象

结构图

信令(signaling)

信令是WebRTC用来协助建立p2p通讯的。主要用于协商双方通讯过程,传递基本信息SDP(会话描述协议)。 例如:打开/关闭连接的指令;视频信息,比如解码器,解码器的设置,带宽,以及视频的格式等;网关信息,比如双方的 IP,port... 一个简单的SDP格式:

具体字段含义可查询: https://datatracker.ietf.org/doc/draft-nandakumar-rtcweb-sdp/?include_text=1

SDP握手

下图为WebRTC通过信令建立一个SDP握手的过程。只有通过SDP握手,双方才知道对方的信息,这是建立p2p通道的基础。

  • 主播端通过 createOffer 生成 SDP 描述
  • 主播通过 setLocalDescription,设置本地的描述信息
  • 主播将 offer SDP 发送给用户
  • 用户通过 setRemoteDescription,设置远端的描述信息
  • 用户通过 createAnswer 创建出自己的 SDP 描述
  • 用户通过 setLocalDescription,设置本地的描述信息
  • 用户将 anwser SDP 发送给主播
  • 主播通过 setRemoteDescription,设置远端的描述信息。

通过SDP握手后,浏览器之间就会建立起一个点对点点直接通讯通道。但是由于我们所处的网络环境错综复杂,用户可能处在私有内网内,使用p2p传输时,将会遇到NAT以及防火墙等阻碍。这个时候我们就需要在SDP握手时,通过STUN/TURN/ICE相关NAT穿透技术来保障p2p链接的建立。具体将放在下一篇详细讲解。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 我赵永强又回来了:单散、认证与数签(五上)

    作为一个后知后觉的人,我也是昨天看到有人在光天化日之下公开批判我【尥蹶子】【不写公众号】,你们先感受下:

    老李秀
  • kangle服务器软件优化原则及部分功能说明

    1.对于动态进程数的命令扩展和长连接的固定进程数的命令扩展,这两种情况是一定要开扩展队列。

    德顺
  • 利用Python批量下载自己喜欢听得音乐

    文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

    python学习教程
  • 【干货】TensorFlow 2.0官方风格与设计模式指南(附示例代码)

    【导读】TensorFlow 1.0并不友好的静态图开发体验使得众多开发者望而却步,而TensorFlow 2.0解决了这个问题。不仅仅是默认开启动态图模式,还...

    小小詹同学
  • 持续搞【附近】系列---听说MongoDB是专业的(三)

    一直听说MongoDB才是【专业】搞地理空间查询的,人家才是【专业】的!相当长一段时间来,一说搞【附近】就会相当一批人的脑海里就不自主浮想到MongoDB......

    老李秀
  • 【Rust日报】2019-11-11 - 关于Rust中的类型布局和ABI的注意事项

    3.4.1 Problem and Motivation for Calling Conventions

    MikeLoveRust
  • vue 3.0 pre-alpha

    一个月前尤大大公布了 vue 3.0 的源码,目前还是 pre-alpha 状态,预计年后会发布正式版本。听到这个消息的第一反应是学习好累呀,在知乎上瞄了一眼尤...

    sunseekers
  • 如何搞【附近的人】---挖坑开篇(一)

    众所周知,老李的【前前任】可能是国内最大的陌生渣滓聚集地,陌生渣滓聚集地的本质是啥?

    老李秀
  • WebKit 架构与模块

    此文章是我最近在看的【WebKit 技术内幕】一书的一些理解和做的笔记。 而【WebKit 技术内幕】是基于 WebKit 的 Chromium 项目的讲解。

    夜尽天明
  • 人脸识别哪家强?四种API对比

    2001年,Paul Viola和Michael Jone开始了计算机视觉的革命,当时的人脸识别技术并不成熟,识别准确度较低,速度也很慢。直到提出了Viola-...

    小小詹同学

扫码关注云+社区

领取腾讯云代金券