高分请教:如何模拟视频采集设备?

huziwu 2009-03-09 11:04:21
目前情况是:应用软件通过视频采集卡来获得数据,视频采集卡是与另一台机器的视屏输出口相连的
现要求在不改变上述应用软件的情况下:
1.拿掉视频采集卡,虚拟一个视频采集卡,即软件运行时能认到这个虚拟设备,而不会报出"找不到视频采集卡",应该是由驱动实现的吧,最好能提供WMD驱动例子?
2.这个虚拟设备将监听网络端口,将网络端口传输来的数据以视频采集卡采集到数据的形式传输给应用软件.
也就是说应用软件现在所获得的数据其实是由网络传输来的,但看起来还是由视频采集卡(已经由虚拟设备代替了)采集的.麻烦大家给些建议,看这种方法是否能够实现,可以的话给些例子或提示,先谢过了,如果问题能够实现并解决的话另开帖加300分
...全文
1765 45 打赏 收藏 转发到动态 举报
写回复
用AI写文章
45 条回复
切换为时间正序
请发表友善的回复…
发表回复
huziwu 2009-03-27
  • 打赏
  • 举报
回复
首先感谢上面的朋友的帮助,结帖了.
虽然问题没有得到很好的解决,但还是通过笨方法实现了.目前虚拟采集卡只做到一种模式,PAL模式没有弄出来.
peeek 2009-03-26
  • 打赏
  • 举报
回复
我现在也正做类似LZ项目;不同的是视频信号通过网线来自HUB。
以前没做过,目前还没头绪呢。 请大家多指教了!
huziwu 2009-03-23
  • 打赏
  • 举报
回复
视频采集卡驱动里有个HW_STREAM_OBJECT结构,里面有个PHW_RECIEVE_STREAM_DATA_SRB的成员指向一个回调例程,而这个例程是用于接收Stream的控制命令的,其中有个命令为SRB_WRITE_DATA,应用程序通过DShow如何触发这个命令呢?通过什么接口,我看IStream接口中有个Write方法,但好像不对,我现在可以获得驱动里的IBaseFilter接口,但接下来不知怎么做了?

唉,问题弄了好几天了,这周末结帖!!!!期待高手路过
huziwu 2009-03-20
  • 打赏
  • 举报
回复
不用了,我已经注册,下载了,谢谢
huziwu 2009-03-20
  • 打赏
  • 举报
回复
[Quote=引用 39 楼 superdiablo 的回复:]
谁说没有DeviceIoControl,我给你的那个网址里面就同时有一个应用程序不停读驱动的输出,并在显示器上显示.
这是传出,传入机制是类似的,这种内存共享的机制是通用的,跟驱动类型没关系.
[/Quote]
还是不行,我下载了,并看了,显示器驱动提供的入口与视频采集不一样,而且也没有用到DeviceIoControl,不过这也不要紧.因为我主要是想参考里面的共享文件部分.
发现共享文件是通过EngMapFile来实现的,其头文件为winddi.h
我在驱动程序中加入EngMapFile,并且#include <winddi.h>
一编译,出现了124个redefine错误,而且这些重定义都是出现在别的头文件中的,例如ddraw.h等,应该是包含在winddi.h中的,因为我没用到ddraw.h,我用的是DDKXP,这个问题还是没有得到解决!!!
期待高手指点,谢谢!!!!!!!!
huziwu 2009-03-19
  • 打赏
  • 举报
回复
你给的网址是要注册才能下载的,我就没进去注册了,你能发到我邮箱吗?谢谢
huziwu@163.com
superdiablo 2009-03-19
  • 打赏
  • 举报
回复
谁说没有DeviceIoControl,我给你的那个网址里面就同时有一个应用程序不停读驱动的输出,并在显示器上显示.
这是传出,传入机制是类似的,这种内存共享的机制是通用的,跟驱动类型没关系.
huziwu 2009-03-19
  • 打赏
  • 举报
回复
怎么沉了啊,大家帮帮忙,顶起来啊.

应用程序怎么向视频驱动传数据呢?
视频驱动好像跟别的驱动不一样,没有DeviceIoControl,在DeviceEntry入口函数注册的派遣例程里只有HWINITAIL结构,驱动代码可以修改,能否通过DShow接口来实现向驱动传数据呢?是将数据传给驱动程序,而不是由驱动程序传出来.
huziwu 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 superdiablo 的回复:]
其实就是把数据放在缓冲区共享给驱动,也不是特别麻烦.要不用共享文件映射也可以.
[/Quote]
我认为麻烦,是因为不知应用程序与驱动如何实现缓冲区共享或共享文件映射啊:(
这方面的知识欠缺,所以做起来就遇到很多问题,麻烦高人指点一下.

我试过在驱动中开一个全局缓冲区g_pBuffer,想通过定时器不断来读取文件数据到g_pBuffer中,但是文件操作函数ZwXXXFile只能用在PASSIVE_LEVEL级,而StreamClassScheduleTimer创建的定时器好像不是运行在PASSIVE_LEVEL级的.
如果想实现这种做法,该怎么做呢?麻烦高人指点一下.
huziwu 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 35 楼 superdiablo 的回复:]
其实就是把数据放在缓冲区共享给驱动,也不是特别麻烦.要不用共享文件映射也可以.
[/Quote]
我认为麻烦,是因为不知应用程序与驱动如何实现缓冲区共享或共享文件映射啊:(
这方面的知识欠缺,所以做起来就遇到很多问题,麻烦高人指点一下.

我试过在驱动中开一个全局缓冲区g_pBuffer,想通过定时器不断来读取文件数据到g_pBuffer中,但是文件操作函数ZwXXXFile只能用在PASSIVE_LEVEL级,而StreamClassScheduleTimer创建的定时器好像不是运行在PASSIVE_LEVEL级的.
如果想实现这种做法,该怎么做呢?麻烦高人指点一下.
superdiablo 2009-03-17
  • 打赏
  • 举报
回复
其实就是把数据放在缓冲区共享给驱动,也不是特别麻烦.要不用共享文件映射也可以.
huziwu 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 33 楼 superdiablo 的回复:]
http://www.codeproject.com/KB/system/driverdev6asp.aspx
这儿有一个虚拟显示器驱动,摄像头驱动应该类似,只是需要实现一些windows的标准接口,具体哪些接口我不是太清楚。
至于在驱动中实现网络监听,要看你在驱动的哪一层截获数据包,你需要了解一下网络驱动的接口。最笨的办法,你可以写一个应用层程序使用winpcap/socket等进行数据报接收,然后让你的应用层程序跟你的摄像头驱动进行通信,把接收到的数据传入。
[/Quote]
那样的话,我在加载驱动的时候就要运行一个让用户看不到的应用程序来接收数据,然后再通过采集卡驱动接口传给驱动,这样会很麻烦的.
我试过在驱动进行数据采集的时候,通过读文件的形式来获得数据,但是出现蓝屏,读文件是用一个计时器来实现的,可能是安全级不够造成的吧.
现在虚拟部分已经差不多了, 但数据传输方面还不知该怎么下手,期待高手们出招帮忙,谢谢
superdiablo 2009-03-17
  • 打赏
  • 举报
回复
http://www.codeproject.com/KB/system/driverdev6asp.aspx
这儿有一个虚拟显示器驱动,摄像头驱动应该类似,只是需要实现一些windows的标准接口,具体哪些接口我不是太清楚。
至于在驱动中实现网络监听,要看你在驱动的哪一层截获数据包,你需要了解一下网络驱动的接口。最笨的办法,你可以写一个应用层程序使用winpcap/socket等进行数据报接收,然后让你的应用层程序跟你的摄像头驱动进行通信,把接收到的数据传入。
My_lolo 2009-03-17
  • 打赏
  • 举报
回复
欢迎加入 77203167 QQ群,大家一起交流学习!
huziwu 2009-03-17
  • 打赏
  • 举报
回复
怎么开始下沉了呢???????
怎么在驱动中实现网络监听呢?
各位大虾帮忙出出计策.....谢谢
"会思考的草"大哥忙什么呢,再帮帮小弟吧,谢谢你的帮助
huziwu 2009-03-16
  • 打赏
  • 举报
回复
现在已经可以虚拟采集卡了,但在设置pin时还有些错误!
再问一下各位大虾第二个问题,如何将视频采集例程中采集的数据改为由从网络接收,是否也可以通过socket来实现,应该注意些什么?
tzf520 2009-03-16
  • 打赏
  • 举报
回复
mark
huziwu 2009-03-16
  • 打赏
  • 举报
回复
我在驱动里的视频捕获例程里面,将捕获数据改从文件读取
使用ZwCreateFile,ZwReadFile,ZwCloseFile,
文件初始化对象是为D:\VideoCap.dat
一运就是出现蓝屏,这是为什么呢?
huziwu 2009-03-16
  • 打赏
  • 举报
回复
to yajyjy:
首先非常感谢你的关注,谢谢!!
你说的可能跟我要求的有点差异,我要做的是让操作系统认为有视频采集卡设备,因为应用软件是通过视频采集卡进行工作的,而此应用软件是由别人提供的,我是不可能修改应用软件的.
tjgbl 2009-03-13
  • 打赏
  • 举报
回复
不懂,up
加载更多回复(23)

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧