c语言 虚拟摄像头设备_c++ 虚拟摄像头驱动程序
Microsoft提供了几种可以访问图像数据的API。
>吐温:用于从扫描仪等拍摄单张图像
WIA:这似乎已经退化为一个单一的图像编解码库。
> VfW:一个非常老的(Win16)API,它真正只能用于视频文件编码/解码,但是支持一些视频采集。
> DirectShow:以前部分在DirectX SDK中,目前在Platform SDK中。这是现在(一般)流媒体解决方案的地方。
> Windows Media / Media Foundation:这似乎更适合视频播放/重新编码。
>制造商特定库:Pylon / Halcon / Imaging Control / …
DirectShow具体:
要在Windows下创建图像采集设备,您必须提供实现流类接口(或更新的Avstream)的设备(驱动程序),或者必须编写必须添加到VideoInputCategory枚举器的usermode COM对象。
Avstream示例为实际的图像采集设备提供了一切。只有实际设备的下层才是真正的缺失。
如果您可以设计设备,您应该创建DCAM或UVC兼容。两者都有Windows提供的内置驱动程序。
如何编写软件源设备:
您必须创建一个DirectShow过滤器,它提供至少一个输出引脚,并在VideoInputCategory下注册。捕获应用程序可能需要某些应用程序需要的几个接口,但这些接口取决于应用程序本身。测试过滤器的简单应用程序是Plattform SDK中提供的GraphEdit和AMCap。
一些代码:
#include
#include
const AMOVIESETUP_MEDIATYPE s_VideoPinType =
{
&MEDIATYPE_Video, // Major type
&MEDIATYPE_NULL // Minor type
};
const AMOVIESETUP_PIN s_VideoOutputPin =
{
L"Output", // Pin string name
FALSE, // Is it rendered
TRUE, // Is it an output
FALSE, // Can we have none
FALSE, // Can we have many
&CLSID_NULL, // Connects to filter
NULL, // Connects to pin
1, // Number of types
&s_VideoPinType // Pin details
};
const AMOVIESETUP_FILTER s_Filter =
{
&CLSID_MyFilter, // Filter CLSID
L"bla", // String name
MERIT_DO_NOT_USE, // Filter merit
1, // Number pins
&s_VideoOutputPin // Pin details
};
REGFILTER2 rf2;
rf2.dwVersion = 1;
rf2.dwMerit = MERIT_DO_NOT_USE;
rf2.cPins = 1;
rf2.rgPins = s_Filter.lpPin;
HRESULT hr = pFilterMapper->RegisterFilter( CLSID_MyFilter, _FriendlyName.c_str(), 0,
&CLSID_VideoInputDeviceCategory, _InstanceID.c_str(), &rf2 );
if( FAILED( hr ) )
{
return false;
}
std::wstring inputCat = GUIDToWString( CLSID_VideoInputDeviceCategory );
std::wstring regPath = L"CLSID\\" + inputCat + L"\\Instance";
win32_utils::CRegKey hKeyInstancesDir;
LONG rval = openKey( HKEY_CLASSES_ROOT, regPath, KEY_WRITE, hKeyInstancesDir );
if( rval == ERROR_SUCCESS )
{
win32_utils::CRegKey hKeyInstance;
rval = createKey( hKeyInstancesDir, _InstanceID, KEY_WRITE, hKeyInstance );
....
_InstanceID是为此“虚拟设备”条目创建的GUID。
c语言 虚拟摄像头设备_c++ 虚拟摄像头驱动程序相关推荐
- 使用 Cuttlefish 虚拟 Android 设备
什么是 Cuttlefish? cuttlefish 是一种可配置的虚拟 Android 设备,既可以远程运行(使用第三方云产品,如 Google Cloud Engine),又可以在本地运行(在 L ...
- VirtualBox :不能分配USB设备到虚拟电脑
VirtualBox :不能分配USB设备到虚拟电脑 问题描述 在虚拟机设置的USB设备中添加了笔记本自带的摄像头 在启动虚拟机挂载的时候,显示不能分配USB设备到虚拟电 USB Device 'Ac ...
- 【原创】IP摄像头技术纵览(一)---linux 内核编译,USB摄像头设备识别
IP摄像头技术纵览(一)- linux 内核编译,USB摄像头设备识别 开始正文之前先来认识一下我的开发环境: 系统:ubuntu 10.04 开发板:AT91SAM9260 + Linux-2.6. ...
- ffmpeg php 抠像_实时虚拟抠像设备八路切换台
功能介绍: 视频输入 多支持12个视频输入通道,必要时可以定制扩展到更多的通道. 设备输入:支持通过1394 / AV/HDMI/SDI/VGA采集卡,接驳各种 WDM 驱动的硬件设备:摄像头.摄像机 ...
- Linux网络摄像头设备端调试过程
转载请标明出处:https://blog.csdn.net/u013752202/article/details/96502576 简介 网络摄像头,即常说的免驱摄像头,其采用UVC协议通过USB跟主 ...
- 与众不同 windows phone (22) - Device(设备)之摄像头(硬件快门, 自动对焦, 实时修改捕获视频)...
原文:与众不同 windows phone (22) - Device(设备)之摄像头(硬件快门, 自动对焦, 实时修改捕获视频) [索引页] [源码下载] 与众不同 windows phone (2 ...
- [linux-nopage]内存映射虚拟字符设备驱动【P119】
文章目录 目的:内核空间映射到用户空间 环境:Ubuntu 20.04 linux内核源码5.11.0-37-generic(版本自选) 实验结果 实验知识点 实验难点 实验代码 nopage.c M ...
- 隐藏在计算机网卡怎样删除,如何卸载电脑中隐藏的虚拟网卡设备
虚拟网卡主要是建立远程计算机间的局域网,在此虚拟的局域网上能进行所有物理存在的局域网的操作,可以互相访问,可以联网玩游戏.当需要卸载电脑系统中的虚拟网卡时,在设备管理器中无法查看到虚拟网卡设备,那么怎 ...
- 虚拟字符设备驱动开发步骤
目录 前言 字符设备驱动简介 内核驱动操作函数集合(file_operations结构体) 字符设备驱动开发步骤 .ko驱动模块的加载和卸载(module_init驱动入口.insmod驱动加载) 字 ...
- 海康内置4G卡的摄像头设备无法注册EasyCVR平台是什么原因?
EasyCVR平台是一款融合多种协议接入方式的视频综合管理平台,可应用在安防.视频监控等场景中.平台不仅部署简单,且功能丰富.性能稳定.在视频能力上,EasyCVR支持海量视频汇聚管理.视频分发.智能 ...
最新文章
- 【驱动】uboot环境变量分析
- 几个值得收藏的国外有关Vue.js网站
- android 进lanucher的广播,(转)Android中Launcher对于AppWidget处理的分析:AppWidgetHost角色...
- 【学习总结】数学-欧拉函数
- linux 7 vsftpd 配置,centos7下vsftpd配置
- Zookeeper的数据模型
- 交换两个变量ab的值PHP,由[交换两个变量的值问题]理解程序的时空复杂度
- WPF CanExecuteChanged
- python摄像头识别快递单号查询_免费对接快递鸟api单号识别查询接口(python)
- 动态调试 ida linux,IDA动态调试-ELF
- 以前是传xml的吗_李菲儿参加《浪姐2》,与黄晓明同台互动!不怕baby吃醋吗?...
- 拓端tecdat|用SAS进行泊松,零膨胀泊松和有限混合Poisson模型分析
- 【QT安装】【QT+opencv安装】
- 运动会加油稿计算机学院150字,学校运动会加油稿150字10篇
- Grow up way
- HTML Rendering Error
- PPT提取文字C代码实现
- OpenGL画三角形
- 安全服务/渗透测试工程师_面试题之OWASP TOP 10
- 红豆薏米的祛湿效果到底好不好?