怎样改变DirectShow中采集的视频大小.

在利用Directshow采集视频的过程中,一般初始化时我们要给Capture Graph视频参数..比如它的长和宽,亮度什么的...当然,如果你什么都不给,DirectShow会为你分配一个系统默认的值..这里介绍如何在初始化时改变采集的视频的长和宽..

1.定义IAMStreamConfig Interface

IAMStreamConfig *pConfig;

2.初始化IAMStreamConfig Interface

hr = pBuild->FindInterface(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Interleaved,pCap,IID_IAMStreamConfig,(void **)&pConfig);

// 这pBuild是一个ICaptureGraphBuilder2 Interface.

  if( hr != NOERROR )
  {
   hr = pBuild->FindInterface(&PIN_CATEGORY_CAPTURE,&MEDIATYPE_Video,pCap,IID_IAMStreamConfig,(void **)&pConfig);
   if(hr == NOERROR)
    AfxMessageBox("load config filter succeed!");
   else
   {
    AfxMessageBox("load config filter failed!");
    return;
   }
  }

3.设置参数(取原来的参数,修改想要改变的部分)

AM_MEDIA_TYPE * mmt;

pConfig->GetFormat(&mmt);    //取得默认参数

VIDEOINFOHEADER * vvih = (VIDEOINFOHEADER*) mmt->pbFormat;

AM_MEDIA_TYPE * pmt = mmt;

VIDEOINFOHEADER * pvih = (VIDEOINFOHEADER*) pmt->pbFormat;

pvih->bmiHeader.biHeight=288;  //修改采集视频的高为288
pvih->bmiHeader.biWidth=352;   //修改采集视频的宽为352

pmt->pbFormat = (unsigned char *) pvih;

pConfig->SetFormat(pmt);   //重新设置参数

这样,DirectShow采集的视频的Data Flow被设置为宽为352,高为288..

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值