美文网首页
webrtc发送端-Channel的宏观架构

webrtc发送端-Channel的宏观架构

作者: bigonelby | 来源:发表于2022-08-07 11:05 被阅读0次

github:https://github.com/bigonelby/webrtcUml/tree/master/latest

webrtc-发送端-Rtcp数据流转-宏观架构.drawio.png
  1. 这个图展示了webrtc中最基本的架子

  2. webrtc中有很多Channel,最顶层的Channel,实际上就是BaseChannel,其派生类可以是VoiceChannel,VideoChannel或者DataChannel

  3. 这些BaseChannel都有一个共同的特点,就是每个都有MediaChannel,我们称之为媒体通道

  4. 那么谁来管理这些Channel呢?自然是ChannelManager。ChannelManager会创建MediaChannel,并创建BaseChannel,将MediaChannel挂在相应的BaseChannel上

  5. ChannelManager是怎样创建MediaChannel的呢?实际上是通过其成员media_engine_创建的。这个media_engine_就是MediaEngineInterface,也就是媒体引擎接口,这个接口的最终目的就是创建MediaChannel。可见MediaChannel是由MediaEngine创建的

  6. 实现MediaEngineInterface的,是CompositeMediaEngine,从命名就可以知道,这是一个组合的MediaEngine,是由VideoEngineInterface和VoiceEngineInterface构成的。实现VideoEngineInterface的,是WebrtcVideoEngine

  7. 对于MediaChannel而言,其实现类是VideoMediaChannel,最终的实现类是WebrtcVideoChannel

  8. 梳理一下,就是MediaEngine创建MediaChannel,对于video而言,就是WebrtcVideoEngine创建WebrtcVideoChannel。BaseChannel有MediaChannel,BaseChannel是由ChannelManager创建的

  9. 架子已经搭好了,我们看看数据流。首先是BaseChannel实现了RtpPacketSinkInterface接口,因此Rtp数据,会通过接口的OnRtpPacket流入到BaseChannel中,BaseChannel再将数据送给MediaChannel,因此最终数据到达了WebrtcVideoChannel的OnPacketReceived方法中

  10. 后面的类图中再具体看看packet数据如何从WebrtcVideoChannel中继续传送到底层

相关文章

网友评论

      本文标题:webrtc发送端-Channel的宏观架构

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