怎样改变DirectShow中采集的视频大小.
2011-03-16 20:23
351 查看
在利用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.定义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..
相关文章推荐
- AlertDialog自己定义View的使用方法+怎样改变弹出框的大小
- 怎样改变Myeclipse中控制台的字体大小
- 提取DirectShow中视频采集的数据
- 用Directshow进行电视卡的音视频信号采集和SDI信号输出
- 怎样改变Java se中字体大小颜色
- 使用DirectShow开发视频采集程序
- 格式工厂转换视频怎样设置才能使视频大小缩小
- 用DirectShow实现视频采集-流程构建 分类: DirectX 2014-09-29 14:44 470人阅读 评论(0) 收藏
- 用Directshow进行电视卡的音视频信号采集和SDI信号输出
- 用Directshow进行电视卡的音视频信号采集和SDI信号输出
- (原)关于sdl在部分机器上做视频显示,改变显示窗口大小会崩溃
- 怎样改变Dialog的大小?
- Directshow采集到的视频BYTE数据转成IplImage数据并保存出去
- 用DirectShow实现视频采集-流程构建
- 怎样让外界无法改变自定义view的尺寸大小
- 用DirectShow实现视频采集
- 怎样使div居中显示 随窗口改变大小
- 用DirectShow实现视频采集-流程构建
- 摘录DirectShow数据,视频采集
- 改变视频一帧大小~