WebRTC笔记(三)音视频同步

1. RTP timestamp和SeqNo

RTP timestamp负责定义媒体数据的采样时刻,描述负载数据的帧间关系;

RTP SeqNo负责定义RTP数据包的先后关系,描述媒体数据的帧内关系;

2. RTP timestamp和NTP timestamp是同一时刻的不同表示;

3. 音视频同步的基本对象是AudioReceiveStream和VideoReceiveStream,两者都继承自Syncable;

4. 负责音视频同步的线程是ModuleProcessThread,主要处理文件是rtp_streams_synchronizer.cc,RtpStreamsSynchronizer类包含以下成员,

  • StreamSynchronization类
  • audio和video的Measurements;
  • AudioReceiveStream和VideoReceiveStream的指针:syncable_audio_和syncable_video_;
class RtpStreamsSynchronizer : public Module {
 public:
  explicit RtpStreamsSynchronizer(Syncable* syncable_video);

  void ConfigureSync(Syncable* syncable_audio);
  ......

 private:
  Syncable* syncable_video_;
  Syncable* syncable_audio_ GUARDED_BY(crit_);
  StreamSynchronization::Measurements audio_measurement_ GUARDED_BY(crit_);
  StreamSynchronization::Measurements video_measurement_ GUARDED_BY(crit_);
......
};

参考文档:

https://www.jianshu.com/p/3a4d24a71091?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io

猜你喜欢

转载自www.cnblogs.com/jiayayao/p/12649665.html