Skip to content

Latest commit

 

History

History
224 lines (201 loc) · 10.7 KB

README.md

File metadata and controls

224 lines (201 loc) · 10.7 KB

pion/webrtc

目录

首先是一个纯Go实现的webrtc api,也就是说脱离浏览器也可以运行, 估计还是没有浏览器那么多优化,不过也算是对webrtc协议的一个Go实现。 毕竟有时候只需要一个Go的实现,而不是整个浏览器。 这也是不通过swig/cgo方式,实现的第一个Go版本的开源库, 她的目标是做成一个社区,而不是为了商业或创建公司来把握pion,真正的开源。

pion/webrtc从2018/05开始创建,虽然年轻,但也发布了几十个release,一切都在变好。

我从2019/02开始入坑Go,5月开始接触pion,初始还分析过前面一段源码, 现在(2019/12)算是以另一种方式重新分析。

分析过程

webrtc标准熟悉

标准的链接

release

v1.0.0

  • 第一个发布版本,仅支持以下特征
    • 音视频的收发
    • srtp库是纯Go
    • dtls是基于openssl(cgo方式集成)
    • 轻量级ice(要么是公网ip,要么是LAN),后面会继续丰富
  • 附带demo,可集成到自己的程序中
    • 通过gs(gstreamer)来收发视音频
    • 录制vp8视频

v1.1.0

  • 第二个发布版本,在第一个版本的基础上新增了如下特征
    • 全功能ice(v1.0.0的就是个辅助)
    • DataChannels支持
    • RTCP支持(有了这个,就可以实现sfu)

v1.2.0

  • 第三个版本,纯Go版本,新增特征如下
    • 支持原始rtp流接入(不是解码,重编码,而是rtp协议级直接支持)
    • 支持Trickle-ice(任何时候都可以添加ice候选),google/firefox都支持
    • 支持rtcp reception,允许应用程序和rtcp包交互和触发
    • 传输部分重构
    • dtls用Go实现
    • srtp改进,并新增tag认证检查
    • rtcp的go-fuzz支持,(go-fuzz是一个随机测试)

v2.0.0

  • 第四个版本,也是改动非常多的一个版本
    • ortc支持
    • data channel优化
    • 日志和ice调试
    • 实验性的:quic/wasm支持
    • api格式,向spec靠拢
    • sctp的可读性提高
    • ice常规提名

v2.2.0

  • 2020.02.17发布
  • 目前最近的一个版本
    • data channel性能提升
    • 为了更好的支持sfu,SettingEngine做了更多的扩展
    • turn支持tcp
    • 支持pcm
    • 轨道的重新协商
    • IVFReader解码器,纯go实现
    • vp9支持