社区
硬件/系统
帖子详情
DirectShow高手请进!
sunhongdi
2006-10-13 10:54:44
我想做一个关于USB摄像头的时时截图程序。
我现在也找了一些资料,但是都很零散,
如果有人做过方面的东西,
我想知道,我应该先看什么,举个例子,
我要自己建一个Filter吗?
希望可以给我点具体的建意,
我现在手头有DirectSHow开发指南,因为,现在时间紧,我想知道,我应该从第几章开始看。
谢谢
...全文
236
8
打赏
收藏
DirectShow高手请进!
我想做一个关于USB摄像头的时时截图程序。 我现在也找了一些资料,但是都很零散, 如果有人做过方面的东西, 我想知道,我应该先看什么,举个例子, 我要自己建一个Filter吗? 希望可以给我点具体的建意, 我现在手头有DirectSHow开发指南,因为,现在时间紧,我想知道,我应该从第几章开始看。 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
taianmonkey
2006-10-30
打赏
举报
回复
应该从代码看起!看书早着呢!
可以参考:
DXSDK\Samples\C++\DirectShow\Capture\AMCap
hony688
2006-10-24
打赏
举报
回复
不复杂,可以自己写一个,但是要是时间紧的话,可以直接用在dshow上开发的activeX控件,就几行代码,就可以实时抓图了.典型的有avplate, avcapture.后者好象要注册一下.你找找吧
WANGHARRY
2006-10-20
打赏
举报
回复
第一章看起!MSDN查 不行问陆其明的老婆谭结红
jiangzy1109
2006-10-18
打赏
举报
回复
在DirecrX Show的帮助文档上有详细的说明,你再仔细看看吧!
jiangzy1109
2006-10-18
打赏
举报
回复
截取静态图片需要用到ISampleGrabberCB接口。
自己写个类,继承这个接口。截图主要在回调函数中完成。
class SampleGrabberCallback : public ISampleGrabberCB
{
public:
// Fake referance counting.
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
STDMETHODIMP QueryInterface(REFIID riid, void **ppvObject);
STDMETHODIMP SampleCB(double Time, IMediaSample *pSample);
STDMETHODIMP BufferCB(double Time, BYTE *pBuffer, long BufferLen);
};
SampleGrabberCallback g_StillCapCB;
AM_MEDIA_TYPE g_StillMediaType;
bool bOneShot;
STDMETHODIMP_(ULONG) SampleGrabberCallback:: AddRef()
{
return 1;
}
STDMETHODIMP_(ULONG) SampleGrabberCallback:: Release()
{
return 2;
}
STDMETHODIMP SampleGrabberCallback::QueryInterface(REFIID riid, void **ppvObject)
{
if (NULL == ppvObject) return E_POINTER;
if (riid == __uuidof(IUnknown))
{
*ppvObject = static_cast<IUnknown*>(this);
return S_OK;
}
if (riid == __uuidof(ISampleGrabberCB))
{
*ppvObject = static_cast<ISampleGrabberCB*>(this);
return S_OK;
}
return E_NOTIMPL;
}
STDMETHODIMP SampleGrabberCallback::SampleCB(double Time, IMediaSample *pSample)
{
return E_NOTIMPL;
}
STDMETHODIMP SampleGrabberCallback::BufferCB(double Time, BYTE *pBuffer, long BufferLen)
{
// if ((g_StillMediaType.majortype != MEDIATYPE_Video) ||
// (g_StillMediaType.formattype != FORMAT_VideoInfo) ||
// (g_StillMediaType.cbFormat < sizeof(VIDEOINFOHEADER)) ||
// (g_StillMediaType.pbFormat == NULL))
// {
// return VFW_E_INVALIDMEDIATYPE;
// }
if (! bOneShot) return VFW_E_INVALIDMEDIATYPE;
HANDLE hf = CreateFile("C:\\Example.bmp", GENERIC_WRITE,
FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, 0, NULL);
if (hf == INVALID_HANDLE_VALUE)
{
return E_FAIL;
}
long cbBitmapInfoSize = g_StillMediaType.cbFormat - SIZE_PREHEADER;
VIDEOINFOHEADER *pVideoHeader =(VIDEOINFOHEADER*)g_StillMediaType.pbFormat;
BITMAPFILEHEADER bfh;
ZeroMemory(&bfh, sizeof(bfh));
bfh.bfType = 'MB'; // Little-endian for "MB".
bfh.bfSize = sizeof( bfh ) + BufferLen + cbBitmapInfoSize;
bfh.bfOffBits = sizeof( BITMAPFILEHEADER ) + cbBitmapInfoSize;
// Write the file header.
DWORD dwWritten = 0;
WriteFile( hf, &bfh, sizeof( bfh ), &dwWritten, NULL );
WriteFile(hf, HEADER(pVideoHeader), cbBitmapInfoSize, &dwWritten, NULL);
WriteFile( hf, pBuffer, BufferLen, &dwWritten, NULL );
CloseHandle( hf );
bOneShot = false;
return S_OK;
}
nicejane
2006-10-17
打赏
举报
回复
你可以看一下DirectShow的示例代码!具体位置为:
SDK安装的目录\Samples\C++\DirectShow\Capture
sheltonwan
2006-10-17
打赏
举报
回复
直接看directx中的directshow文档吧,看using directshow
rageliu
2006-10-16
打赏
举报
回复
不需要,枚举取得采集设备加入Graph就可以
Windows之5:
DirectShow
+H.264+AAC采集编码
这个课程主要讲解的是
DirectShow
的音视频框架,然后结合H.264+AAC进行音视频编码。本课程适合Windows平台的学员,DShow框架比较通用,适合音视频采集及处理。主要的知识点包括DShow基础及Filter原理、DShow配置开发环境及入门简介、编译baseclasses项目、DShow播放器案例实战、DShow枚举音视频输入设备信息、DShow采集麦克风音频案例实战、DShow+H.264+AAC音视频采集与编码案例。其中也包括DShow的自定义Filter组件开发,包括自定义弹球、自定义组件作为视频源等案例。
把你的Windows Media Player 打造成全能的播放器
------WMP 插件大搜罗在Windows中自带一个媒体播放器Windows Media Player 我们都把它简称为WMP, 但WMP给人一种功能很弱的感觉,因为似乎它只能播放几种微软支持的格式,而从互联网下载的很多的影音文件它就播放不了,于是一些电脑伪
高手
就会告诉你你需要下载一个另外的播放器,其实WMP是基于
DirectShow
开发的播放器,也就是说给系统安装相应的解码器和分离器,WMP...
《编程
高手
箴言》读后 #3
毕业也有几年了,也看了和学了不少东西。有时也想写点什么,但总是觉得头绪很多,一直没有动笔。最近翻了翻梁先生的《编程
高手
箴言》,突然想写点什么,权且用读书笔记的形式写点东西。等号上面的摘字《箴言》,下面则是笔者自己的感想。希望大家指教,但是谩骂就不必了,谢谢。注:这一部分涉及《箴言》第三章。所有的消息队列看上去是放在USER32的模块内,但是每个应用程序自己有一个USER32,因为每个应用程序的
【mpeg4】xvid参数分析
https://blog.csdn.net/china_video_expert/article/details/7230353
各种压缩格式介绍!(摘录2)
http://xpatrick.spaces.live.com/简述:DivX和Xvid的历史与未来,基于MPEG-4的两种影音压缩技术简述:DivX和Xvid的历史与未来,基于MPEG-4的两种影音压缩技术如今的电影是越来越好看,拍摄、制作的特技效果越来越精彩,人们期待的程度越来越高,盗版也越来越多;同时电影制作公司的防盗版技术做的越来越高明。但有句老话叫:"道高一尺,魔高一丈",无论你的电
硬件/系统
2,640
社区成员
17,239
社区内容
发帖
与我相关
我的任务
硬件/系统
VC/MFC 硬件/系统
复制链接
扫一扫
分享
社区描述
VC/MFC 硬件/系统
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章