webrtc(5) 采集模块

采集器VideoCapturer

采集器的定义

class VideoCapturer : public sigslot::has_slots<>, public rtc::VideoSourceInterface<webrtc::VideoFrame>
  • 可以看到采集器继承了VideoSourceInterface,因此采集器就是一个数据源

采集器的接口和实现

  • VideoCapturer是一个抽象的类,实际的采集器是VideoCapturer的子类WebRtcVideoCapturer;但是他们只定义了一些比较通用的对外的接口,而具体的采集功能是通过VideoCaptureModule实现的
  • VideoCaptureModule是采集模块,它也是一个抽象类,具体的实现位于VideoCaptureImpl
  • 可以这样看:VideoCapturer/WebRtcVideoCapturer定义了采集的接口,具体的采集功能由VideoCaptureModule/VideoCaptureImpl实现

采集器包含的子模块

  • WebRtcVideoCapturer包含下面的一些模块:
    • VideoCaptureModule,视频采集模块
    • WebRtcVcmFactory,主要是为了创建VideoCaptureModule,没有其他太大的用处

采集的流程

  • 1、VideoCapturer::AddOrUpdateSink,注册数据输出点
  • 2、WebRtcVideoCapturer::Start,注册一些数据回调函数,然后开始采集
  • 3、VideoCaptureImpl::IncomingFrame,实际的采集工作交给VideoCaptureImpl处理,得到一帧之后VideoCaptureImpl::IncomingFrame被调用,这个函数会进行一些简单的前处理
  • 4、VideoCaptureImpl::DeliverCapturedFrame,进行一些数据统计
  • 5、WebRtcVideoCapturer::OnFrame(步骤1注册了数据回调函数)
  • 6、VideoCapturer::OnFrame,简单的数据转发
  • 7、VideoBroadcaster::OnFrame,VideoBroadcaster相当于数据输出点的集合
  • 8、VideoSinkInterface::OnFrame,到了这里,原始的帧数据就从采集模块传输到了下一个模块(一般是编码模块)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章