DShow视频应用开发,欢迎大家都来讨论

arcore 2003-05-08 04:51:36
为了大家都能清楚明了的表达自己的观点及编程思想,我先把我的应用程序中有关视频开发部分的功能需求说一说吧。
简单的说,应用程序中的视频部分的功能需求主要是“视频采集”- “压缩存储”(分为单帧图像的存储和视频流的存储) - “解压回放”(是指对视频数据流而言,在回放过程中要保存单帧图像)这三个小块。
小弟目前的进度:我的开发环境为Win98 + Delphi5 + MS SQL Server 7。电脑上面装有一块视频采集卡。此卡在VFW下支持的分辨率有192 X 144、384 X 288 及 768 X 576三种。由于小弟是在Win98下面做开发,所以就用VFW模式。用VFW模式实现时,在三种分辨率下保存单帧图像都没有问题。保存视频流时,在192 X 144与384 X 288下基本不丢帧,可以很流畅的实现,在768 X 576分辨率下采集时,丢帧很厉害,而且显示器上的采集窗口不能同步显示视频。举例说,我用一台VCD作为视频输入,在768 X 576分辨率下,视频采集窗口上的图像静止不动。
<font color="red">基于上述现像,不难看出我现在的问题:怎样在768 X 576分辨率下实现流畅的视频流采集?如果我要实现在全屏模式下(即分辨率达到显示器的当前分辨率)采集,能否办到?</font>
由于VFW有其局限性,所以,我打算采用DShow现实。由于以前没有接触过DX开发,只好自己看相关资料,逐步探索。当然,做DX开发,用VC++做OCX是较好的选择,但小弟以前从未接触过VC++,如果现在去啃,老BOSS不会给我充余的时间的。所以,我打算仍然用Delphi来做。这段时间,小弟在网上查了些资料,也找到了Delphi下的DShow接口单元,并对DShow有了一定的了解,但所知有限。在所有的DSow资料中,小弟觉得在http://www.progdigy.com/里面下的DSPack2.3相比而言要好一些,因为在DSPack2.3里面提供了很多对象,这些对象很好的封装了DShow里面的接口对象,易于开发,并且还有源码。感兴趣的朋友可以到http://www.progdigy.com/上去下载。
<font color="red">现在,我想让大家讨论的是:当采集卡以768 X 576分辨率下工作时,用DShow实现768 X 576分辨率和全屏模式下(即分辨率达到显示器的当前分辨率)下视频流的采集、压缩存储以及解压回放等技术。当然,Win2000的驱动模式为WDM,如果采用DShow,是否必须到Win2000下开发?如果不,在VFW与WDM二者之间要注意哪些问题?</font>
问题可能有点难度(至少对于小弟是如此),所以,占用大家一些宝贵的时间,请大家认真的把我上述的问题看清楚,并给出观点看法,小弟感激不尽。鉴于职业道德,小弟也不想被老BOSS骂,因此请大家不要问我在做什么项目,也不要问我采集卡是什么牌子,这其中为难之处,请大家谅解!当然,我也不想让大家给出源代码什么的,我只是想大家都来讨论一下DShow技术,以及它在Delphi下的实现,这对大家都有好处吧。
小弟QQ:26965829,欢迎加入在线交流。
...全文
124 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
seion 2003-10-01
  • 打赏
  • 举报
回复
up c
arcore 2003-09-01
  • 打赏
  • 举报
回复
up b
arcore 2003-08-31
  • 打赏
  • 举报
回复
up a
arcore 2003-08-30
  • 打赏
  • 举报
回复
我这几天在CSDN里面看了一些资料,准备自己用DShow接口,一行一行的写。

请大家帮帮忙。
thisisyjs 2003-08-29
  • 打赏
  • 举报
回复
看来看去还是觉得用 VC++ 好一些,
98SE 也支持WDM驱动,不必非要在2k下开发。
DSPack2.3用的人不多啊,还是vc比较直接。
arcore 2003-07-27
  • 打赏
  • 举报
回复
大家继续发言。
arcore 2003-07-26
  • 打赏
  • 举报
回复
请大家继续发言。
arcore 2003-07-23
  • 打赏
  • 举报
回复
怎么没有人回了?
arcore 2003-07-18
  • 打赏
  • 举报
回复
各位大哥,说说啊。。。
root3646 2003-07-18
  • 打赏
  • 举报
回复
呵呵~先做个记号!!
naughtyboy 2003-07-18
  • 打赏
  • 举报
回复
没有做过
现面是前人的翻译,看看有没有帮助

如果你正在开发98环境下的vxds,你可能有时需要在VXDS中调用WDM服务.
98DDK有一些限制在这方面.
但是在lib\i386\free\win98(DDK)目录下你可以找到wdmvxd.clb库.
这个库提供了大部分的98下WDM的服务入口联接.系统的每个服务都是通过2EH号中断来执行.
2Eh被一个系统分配程序所接管 .
(All WDM Service CaLL --->int 2EH.2EH is handle by a dispatcher).
在调用WDM服务前,分配者确定异常stack已经建立,异常stack在WDM驱动中已经支持.
这个库是看起来像一个Import库,即使他根本不建立任何import.
如果你使用DUMPBIN加上linkermember选像(dumpbin /linkermember wdmvxd.clb)
,你将看到这个入口点被标记_imp_.
这个说明你能直接使用这个在WDM.h的原型于Vxd中.
例如,假定你想从vxd中调用RtlInitUnicodeString.
你需要如下原型
NTSYSAPI
VOID
NTAPI
RtlInitUnicodeString(
PUNICODE_STRING DestinationString,
PCWSTR SourceString
);
此外,你还要一些特别的定义.
#define NTSYSAPI __declspec(dllimport)
#define NTAPI __stdcall
这时,将有一个联接问题.调用与wdmvxd.clb的定义不符.
只有在必要的时候才用wdmvxd.clb,可能会有些许多的问题.
因为IRQL并没有在vxds中定义.在调用这些服务时,有许多的可能都导致错误的发生.
arcore 2003-07-13
  • 打赏
  • 举报
回复
怎么没有人回答?
arcore 2003-07-11
  • 打赏
  • 举报
回复
请问,在98下面怎么用wdm?98下的驱动不是wdm的。
u2m 2003-05-08
  • 打赏
  • 举报
回复
directshow做播放器接口我还算比较熟了,MSN联系
去那里踢一脚http://expert.csdn.net/Expert/topic/1754/1754776.xml?temp=.7877161

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi GAME,图形处理/多媒体
社区管理员
  • GAME,图形处理/多媒体社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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