如何改变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 时会失败.)

关于此问题,困扰已久,也的到过一些高手的指点,在此先表示感激。但仍然希望有人能帮忙彻底解决。谢谢!!!
...全文
168 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
能再具体一些吗?或者给点具体的方向性的建议。
谢谢!

2,553

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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