在刚接触WebRTC源码的时候,遇到了大量的track,source,sink等关键字,最近渐渐理清了英文语境下这些词的关系。
一、名词解释
source:媒体流提供者
track:应用持有的媒体流,可以用来播放
sink:媒体流接受者
二、Track,Source,Sink关系
三者之间的关系如图:
source ---(提供媒体流)---> track ---(输出媒体流)---> sink
例如,在/Sdk/Android包下的VideoTrack.java,用来播放视频流的类。
它的source是音视频引擎,sink是Android的屏幕渲染类,分别被封装为VideoSource.java,VideoSink.java。
三、Source,Sink关系
两者关系如图:
source--->sink
所有提供媒体流的组件,都是Source;所有接受媒体流的组件,都是Sink。
例如,/pc包下有一个类remote_audio_source.cc,它处理的音频流流向如图:
mediaEngine ---> remoteAudioSource ---> addedSinks
对于mediaEngine来说,remoteAudioSource就是sink。
对于remoteAudioSource来说,Engine就是source,下层接受者就是sink。