在应用程序开发过程中遇到的几个问题之后,我终于设法放弃了使用VFW。
感谢StackOverflow,我现在知道VFW已经过时,希望切换到DShow,让我的应用程序与Vista / W7一起使用。
不幸的是,已经完成了工作并且已经将应用程序发送给客户端,但是一旦我们意识到我们在Vista / W7上遇到帧速率问题 - 我们决定重写视频类并使用DirectShow来建立一个好的用于webcameras的音频/视频捕获引擎。
这将是棘手的,因为我们从未用DShow编码,现在我们正在寻找如何的几个具体示例:
连接到选定的webcamera
类似于:capDriverConnect
将相机分辨率设置为640x480和RGB24格式(我们需要为每帧RGB24到YUV420)
类似于:capSetVideoFormat / capCaptureSetSetup
为此webcamera设置音频捕获
类似于:capSetAudioFormat
注册两个回调:
类似于:capSetCallbackOnVideoStream
类似于:capSetCallbackOnWaveStream
能够在父窗口的某处显示预览窗口
类似于:capPreview
在需要时执行开始/停止操作
执行绘图到实际框架
类似于:
SetBitmapBits(CameraInput.GetFrameBitmap(),W * H * 3,vdhdr->的lpData); //用gdi +绘制一些东西 GetBitmapBits(CameraInput.GetFrameBitmap(),w * h * 3,vdhdr-> lpData); //用数据重新设置框架
以上所有内容都是使用VFW制作的,但正如我之前写的那样,我们不幸需要切换直接显示。
有没有人可以帮助我们完成一个可以帮助我们学习Direct Show几个月的课程?
答案 0 :(得分:2)
最好的例子是the ones from Microsoft。
你的问题仍然以VFW的形式表达,所以很难按照书面回答。例如,在DirectShow中,您不会注册用于编码视频帧的回调。相反,您将开发一个编码器过滤器,它将从捕获源接收数据。
作为替代方案,如果您仅定位Vista及更高版本,则会the Microsoft Media Foundation。我没有经验,所以我不知道学习曲线与DirectShow的比较。
答案 1 :(得分:0)
我建议您在GraphEdit using FFDshow filters上构建图表。
EditGraph正在演示如何在DirectShow上构建图形
我认为您不需要自己构建过滤器类。在您构建图表后,您将能够使用GraphEdit观看视频。实现图表是a very simple task。