WebRtc AudioTrack and VideoTrack

来源:互联网 发布:随机算法原理 编辑:程序博客网 时间:2024/06/05 11:36

    WebRtc Stream 里封装了AudioTrack和VideoTrack Vector.    WebRtc的 A/V Track 其实就是 Video/Audio Source 和一些状态。   Track的状态定义在 MediaStreamTrack

template <typename T>class MediaStreamTrack : public Notifier<T> { public:  typedef typename T::TrackState TypedTrackState;  std::string id() const override { return id_; }  MediaStreamTrackInterface::TrackState state() const override {    return state_;  }  bool enabled() const override { return enabled_; }  bool set_enabled(bool enable) override {    bool fire_on_change = (enable != enabled_);    enabled_ = enable;    if (fire_on_change) {      Notifier<T>::FireOnChanged();    }    return fire_on_change;  } protected:  explicit MediaStreamTrack(const std::string& id)      : enabled_(true), id_(id), state_(MediaStreamTrackInterface::kLive) {}  bool set_state(MediaStreamTrackInterface::TrackState new_state) {    bool fire_on_change = (state_ != new_state);    state_ = new_state;    if (fire_on_change)      Notifier<T>::FireOnChanged();    return true;  } private:  bool enabled_;  std::string id_;  MediaStreamTrackInterface::TrackState state_;};
   一是Track自身是否可用, enable 和 disable,  第二是TrackState,  这个跟在Track内的Audio/Video Source 相关, 视Source状态 分别置值为: kEnded 或者 kLive.  

Local Stream 中的Track通过 RtpSender 跟WebRtc Session相连接,   WebRtc Session 自己是AudioProvider/VideoProvider/DataProvider,   可以接收数据。 







1 0
原创粉丝点击