webrtc中视频采集实现分析(一) 采集及图像处理接口封装


视频采集是媒体库最基础功能。但是它的实现与操作系统有强相关性,因为不同的操作系统提供的视频采集接口不一样。视频采集模块也具有通用性,不同媒体库的视频采集模块实现的功能是相同的,主要包括如下几个功能:

  1. 检索视频采集设备
  2. 指定视频采集设备进行采集
  3. 根据指定的采集参数(包括分辨率,帧率,图像格式)来初始化设备
  4. 视频帧数据分发

所以如果要实现自己的媒体库,完全可以把webrtc中视频采集模块移植过来。尽管是复用代码,但也需要弄清楚代码的结构,了解它特点和局限性。

我将从来这三个方面:视频采集类,视频数据帧处理类,视频分发框架来分析webrtc视频采集的实现,这篇文章主要介绍前两个方面。

webrtc中视频采集类

webrtc中视频采集模块的代码位于video_capture目录下。建立了两个类体系来定义了视频采集的接口,分别是DeviceInfoVideoCaptureModule。还有一个辅助类VideoCaptureFactory,是个工厂类,用来创建DeviceInfoVideoCaptureModule具体的实现对象。

DeviceInfo

如下为对应的类图

在这里插入图片描述

DeviceInfo可以从接口的名字上看出,这个类提供就是检索视频采集设备及采集能力的接口

  • DeviceInfo为抽象类,定义的都是接口

  • DeviceInofImpl也为抽象类,实现了可以提炼出来的平台通用的接口

  • DeviceInfoDsDeviceInfoLinux分别对应的是windows和linux的视频采集实现了

  • 采集设备有唯一标示,接口中对应为deviceUniqueIdUTF8

GetBestMatchedCapability

它有个GetBestMatchedCapability接口要着重的讲一下,它实现了如何决策视频采集参数,所谓的视频采集参数包括:分辨率,帧率,图像格式 ,分别决定了视频的清晰度,流畅度和保真度。

GetBestMatchedCapability中有个requested参数就表示上层业务指定的参数,但是指定的参数与设备的实际支持的参数可能匹配不了,最坏的情况是所有的都匹配不上。所以往往是找一个最接近而不是完全匹配的,比如:设置的参数是 640480 30fps,但是设备支持的有1080P(19201080 30fps),720P(1080*72

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mo4776

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值