如何改变Capture Size?DirectShow高手请进.

LanceX 2003-01-06 11:48:23
我用DirectShow写一个影象抓取(AmCap)程序。希望可以修改抓取的尺寸。但是我得不到IAMVfwCaptureDialogs接口,因此采取其他方法。我尝试用IAMStreamConfig::SetFormat()和它的属性框修改,好象都不行。麻烦高手帮我看看,那里做错了?
1.IAMStreamConfig::SetFormat()和它的属性框修改尺寸。
2.清空输入输出Pin及其Stream。将IVideoWindow断开。
3.重新RenderStream,建立预览(Preview)窗口。(此时,用接口得到其尺寸发现仍为原默认尺寸。若之前将尺寸改大,则重新Render Preview Stream 时会失败.)

关于此问题,困扰已久,也的到过一些高手的指点,在此先表示感激。但仍然希望有人能帮忙彻底解决。谢谢!!!
...全文
86 点赞 收藏 7
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
CrazyLion 2003-01-09
没问题。只要你记得给我分!
我帮你up一下
回复
LanceX 2003-01-09
好,我再看看。我发现只是无法重新建立预览画面。capture pin 还是修改了,而且,也可以正确的录下Avi.先谢谢了,迟一点再给你分,行吗?我还想再听一点建议,迟一点再结贴。
回复
CrazyLion 2003-01-08
你可以查看一下DirectX8.0(8.1也可以)的帮助。其中有个叫做SmartTee的过滤器。
也许能够解决你下在的问题。
回复
LanceX 2003-01-07
谢谢!!!我还有点问题想问。我修改尺寸时发现超过640*480(包括这个尺寸)Preview pin就无法重新RenderStream,因此无法重新建立预览画面。而Capture pin弹出的设置项里,最大的尺寸是720*576。你知道原因吗?如果你需要再加分,我另外再加。感激ing...
回复
CrazyLion 2003-01-07
IAMStreamConfig *pSC;

LONG hr = gcap.pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Interleaved,gcap.pVCap,
IID_IAMStreamConfig, (void **)&pSC);

if (hr != NOERROR)
hr = gcap.pBuilder->FindInterface(&PIN_CATEGORY_CAPTURE,
&MEDIATYPE_Video, gcap.pVCap,
IID_IAMStreamConfig, (void **)&pSC);


AM_MEDIA_TYPE *pmt;
hr = pSC->GetFormat(&pmt);
pmt->subtype = MEDIASUBTYPE_YUY2;
//pmt->subtype = MEDIASUBTYPE_UYVY;
//pmt->subtype = MEDIASUBTYPE_YV12;
HEADER(pmt->pbFormat)->biWidth = 352;
HEADER(pmt->pbFormat)->biHeight = 288;

hr = pSC->SetFormat(pmt);
pSC->Release();
DeleteMediaType(pmt);
回复
CrazyLion 2003-01-06
仔细看看amcap source code
里头是完全可以改变它的Capture Pin
回复
LanceX 2003-01-06
to CrazyLion
能再具体一些吗?或者给点具体的方向性的建议。
谢谢!
回复
相关推荐
发帖
多媒体/流媒体开发
创建于2007-08-27

2459

社区成员

专题开发/技术/项目 多媒体/流媒体开发
申请成为版主
帖子事件
创建了帖子
2003-01-06 11:48
社区公告
暂无公告