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,到了這裏,原始的幀數據就從採集模塊傳輸到了下一個模塊(一般是編碼模塊)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章