webrtc视频采集

视频采集相关类图

webrtc视频采集

  • DeviceInfo接口提供了设备枚举相关功能。

  • NumberOfDevices枚举设备个数。

  • GetDeviceName获取某个设备名称。

  • GetCapability枚举某个设备所支持的所有能力(VideoCaptureCapability: 分辨率,最大帧率,颜色类型)

  • VideoCaptureModule视频采集模块的基类:

  • Start/StopCapture用来开始/结束视频采集;

  • CaptureStarted用来判断当前capture运行状态;

  • Register/DeCaptureDataCallback用来注册/注销数据回调模块;

  • Set/GetApplyRotation用来设置视频旋转角度。

VideoCaptureDS和VideoCaptureModuleV4L2是VideoCaptureImpl类和VideoCaptureModule子类:
声明静态Ctreate方法,用于创建平台相关的VideoCaptureImpl子类vcm_,在Windows平台上为VideoCaptureDS(modules\video_capture\linux\device_info_ds.cc),在Linux平台上实现的子类是VideoCaptureV4L2(modules\video_capture\linux\device_info_linux.cc)。
调用vcm_实际上是调用VideoCaptureDS(windows)或VideoCaptureModuleV4L2(linux)。

视频采集相关用例图

webrtc视频采集

  • 1.Conductor类调用CapturerTrackSource的静态方法Ceate.

  • 调CapturerTrackSource::CreateDeviceInfo–>VideoCaptureImpl::CreateDeviceInfo创建info(DeviceInfoDS)对象

  • windows实现是在video_capture_factory_windows.cc

  • linux实现是在device_info_linux.cc

  • 3.调用info(DeviceInfoDS)对象对象的NumberOfDevices获取设备数量。

  • 4.调用VcmCapturer的静态方法Create创建VcmCapturer对象capturer.

    1)实例化VcmCapturer对象vcm_capturer。
    2)调用vcm_capturer的Init.
    3)Init函数首先调用CreateDeviceInfo创寻device_info(DeviceInfoDS)对象.
    4)device_info调用GetDeviceName获取设备名。
    5)调用VideoCaptureFactory的静态方法Create创建VideoCaptureDS对象vcm_
    6)调用RegisterCaptureDataCallback设置回调。
    7)调用device_info的GetCapability获取采集设备的VideoCaptureCapability参数并且设备视频宽、高、最大帧率、图片类型。
    8)调用vcm_的StartCapture方法开始采集。