概述:通过DirectShow实现本机摄像头的视频采集,以及利用dshow模块通过手动实现IPin和IBaseFilter等实现虚拟摄像头。

总结:我们知道目前pc平台的视频采集主要有DirectShow和MediaFoundiation,而且虚拟摄像头的实现一般也是利用dshow的baseclass模块进行实现,而我们则选择通过手动实现IPin和IBaseFilter模块抛弃baseclass,从而对于DShow的采集内部流程更加了解。

首先简单介绍一下DirectShow:

DShow是windows平台上的流媒体框架,主要提供了媒体流的采集和回放功能,主要支持的格式有ASF,MPEG,AVI,MP3,WAV等。同时支持使用wdm驱动或者早期的vfw驱动进行媒体流的采集。

DirectShow是建立在组件对象模型(com)上的,因此当我们编写DirectShow应用时,需要具备Com的编写知识,后续我们会简单介绍,现在我们简单介绍一下DirectShow的接口,也是我们外部调用的一些常用接口。

IGrapBuilder:构造Filter Graph接口,建立和管理一系列的Filter。

IMediaControl:控制多媒体流在过滤图表中的流动,如启动停止等。

IVideoWindow:控制视频渲染窗口的属性。

IBaseFilter:用于定义一个具体的FIlter,实现多媒体数据的处理。

IPin:用于管理两个Filter之间的Pin,从而实现连接Filter。

ISampleGrabberCB:ISampleGrabber的回调接口,主要用于实现采集数据回调。

DirectShow程序是由一个个filter构成,filter执行一些多媒体流的操作,比如:读文件,采集设备获取视频,数据渲染等。filter主要包含三类:source filter,transform filter,renderer filter。

source filter:filter的数据源,这些数据可以来自文件,网络,摄像头等等。

transform filter:接收数据,数据处理传输的作用,主要是将数据传入下一个filter,如编解码fitler等。

renderer filter:处于filter链的最后,接收数据并进行渲染。如一个视频帧被渲染到窗口,一个写文件fitler将数据写入文件等。

区分filter标准最主要的是其中包含的Pin的类型,所以在此我们要简单介绍一下Pin的含义,Pin意思就是管脚的含义,有输入pin和输出pin,source filter只包含输出pin,transform filter既包含输入pin又包含输出pin,最终我们通过将对应的输入输出pin进行连接成功则后续就实现了数据流的传输,关于Filter内部的连接也是实现重点。

那么Filter是如何与Pin进行关联的?此时就涉及到了IEnumPins接口,通过该接口我们可以枚举Filter中内部的Pin对象,从而实现获取Pin的类型等参数信息。

那么在连接之前我们需要约定传输的媒体类型,该类型是如何约定的?此时就涉及到IAMStreamConfig接口,通过该接口可以进行设置和获取Filter支持的类型。

我们知道了约定的类型,和对应的pin,那么我们就可以实现对应pin的连接。连接成功后约定好对应数据的缓存,通过IMeidaControl接口启动采集。

下面就是简单的采集界面和 我们自己实现的虚拟摄像头,系统win7,64bit。

图一:本机虚拟摄像头的获取列表,其中QW DShow VCamera为我们自己实现的虚拟摄像头

图二:为我们自己虚拟摄像头进行读文件操作,并实现预览和数据保存等。

总结:以上就是关于我们对DirecShow的简单介绍,后续如果喜欢的话记得订阅啊。

DirectShow实现视频采集和虚拟摄像头相关推荐

  1. windows下directShow音视频采集

    目录 前言 一.DirectShow简介 二.DirectShow视频采集主要流程介绍 1.DirectShow视频采集主要API介绍 三.视频采集软件设计框图 四.音频采集软件设计框图 <wi ...

  2. Video4Linux下USB摄像头驱动和视频采集的实现

    1 引言 多媒体通信技术的发展为信息的获取和传输提供了丰富的手段,视频采集是其中不可缺少的重要组成部分.视频采集的手段多种多样,随着人们对降低系统成本和提高可靠性的迫切需求,基于嵌入式的视频采集系统成 ...

  3. 虚拟摄像头驱动原理及开发

    (以下所说的都是基于微软的windows平台)                类似功能的产品,如著名的e2eSoft的 VCam,国内新浪的9518虚拟视频, 新浪的虚拟视频是DirectShow应用 ...

  4. android camera2 采集,视频采集:Android平台基于Camera 2的实现

    前言 这篇文章简单介绍下移动端Android系统下利用Camera2相关API进行视频采集的方法. Camera2是谷歌在Android 5.0新增的用来替代Camera1操作摄像头的一个全新的API ...

  5. 摄像头捕获视频流软件AMCAP使用教程(视频采集捕获处理媒体制作微型软件)

    视频采集捕获处理媒体制作微软AMCap,兼容大多数摄像头,"Amcap"是绝大多数摄像头都会附带的一个录像小软件,在摄像头驱动程序文件夹中即可找到.非常便捷的一款视频捕捉程序,其可 ...

  6. directshow 虚拟摄像头 实例 代码解读

    本文只介绍这个源码的大致构成以及怎么修改,因为其他的我也不会啊哈哈哈,我就是用QQ调用虚拟摄像头读取我自己的视频或者图片播放给别人让别人以为这就是实时的而已. 1,示例代码:QQ可用 Directsh ...

  7. Rviz2 摄像头视频采集与图像标定

    Rviz2 摄像头视频采集与图像标定 准备摄像头 有摄像头的可以直接设置虚拟机的 USB 兼容性来设置即可,但是由于我们的设备没有摄像头,所以这里我们要安装一些摄像头驱动来通过手机摄像头做外设进行使用 ...

  8. 【Android RTMP】Android Camera 视频数据采集预览 ( 视频采集相关概念 | 摄像头预览参数设置 | 摄像头预览数据回调接口 )

    文章目录 安卓直播推流专栏博客总结 一. Android 端数据采集涉及到的相关概念 二. Camera 预览图像尺寸设置 三. 获取摄像头采集的数据格式 安卓直播推流专栏博客总结 Android R ...

  9. v4l2视频采集摄像头

    v4l2 --是Linux内核中关于视频设备的内核驱动框架,为上层访问底层的视频设备提供了统一的接口. /dev/vidioX 1.打开设备文件 fd=open("/dev/video3&q ...

  10. 摄像头、视频采集和摄像设备图像质量判断的几种简单有效目测方法

    来源:http://blog.csdn.net/lezhiyong 视频图像性能的几种简单目测方法,也可在购买视频采集和摄像设备拿来做参考 软件编解码性能测试: 摄像头前快速挥手,看手部是否连贯.是否 ...

最新文章

  1. 2021年大数据HBase(十一):Apache Phoenix的视图操作
  2. c语言编写系统服务程序,C语言Windows服务程序编写-ServiceMain
  3. docker build命令详解_『中级篇』docker之java容器运行外置springboot-jar(番外篇)(79)...
  4. linux 回退乱码,如何在linux sqlplus 下实现方向健和回退键操作而避免乱码
  5. BZOJ 1101 Luogu P3455 POI 2007 Zap (莫比乌斯反演+分块)
  6. Asp.Net Mvc - 在OnResultExecut* 拦截Action返回的HTML
  7. Android 蓝牙模块
  8. 智慧气象 开源_来自开源的半条命11条智慧
  9. 我可能不适合做前端,你呢?
  10. android消息发送字符串,Android aSmack-如何对文件发送进行自定义消息...
  11. oracle建表多个主键怎么办,Oracle建表、索引、主键
  12. BZOJ3162: 独钓寒江雪
  13. onenote android同步,移动版OneNote更新 自动同步支持Office365
  14. 未转变者服务器tp指令大全,Unturned未转变者3.21版本高级指令大全
  15. Android新手入门 FAQ
  16. Python期末大作业 —— 射靶
  17. 计算某年某月某日是这一年的第几天
  18. 爬虫之模拟强智系统登录
  19. 爱快固件是Linux系统吗,Linux 系统下 VirtualBox 里安装爱快系统 (2.4.4)
  20. 语音转文字转换器市场现状研究分析-

热门文章

  1. Axure学习总结1
  2. 蓝桥杯每日一题(数学思维)
  3. 如何打通 SAP Cloud for Customer 系统和微信公众号的双向消息通信功能
  4. iMac使用点滴(不断更新中)
  5. linux学习(八)鸟叔第十二章:脚本练习
  6. 英语每日听写练习 Day 8
  7. Android软键盘的换行键换成其他键
  8. 在eclipse中将android工程打包成apk
  9. C++ MFC框架结构的分析
  10. OSChina 周二乱弹 —— 节后综合症如何治疗?