📄 subject_17572.htm
字号:
<p>
序号:17572 发表者:程建勇 发表日期:2002-10-13 08:00:34
<br>主题:如何在采集的时候处理采集的数据
<br>内容:我在使用directshow采集的时候想对采集的buffer进行处理<BR>希望能够在preview的时候能够看到处理的效果<BR>请问如何能够得到buffer的数据,得到buffer指针后如何处理呢?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:鸡蛋壳 回复日期:2002-10-13 11:12:07
<br>内容:这个问题有很多很多人问过.<BR><BR>答案就是用ISampleGrabber接口.<BR>你必须有2个对象:<BR>ISampleGrabber *pSample;<BR>IBaseFilter *pSGFilter;<BR><BR>hr = CoCreateInstance( CLSID_SampleGrabber, ..., IID_ISampleGrabber,..., &pSample);<BR><BR>hr = pSample->QueryInterface( IID_IBaseFilter, &pSGFilter );<BR><BR>然后在ICaptureGraphBuilder2->RenderStream( &PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video, pSrc, pSGFilter, NULL );<BR><BR>其中pSrc是你的采集卡的IBaseFilter, 相信你已经通过ISysEnum得到了. 在用SampleGrabber之前, 你的renderstream中, pSGFilter的位置是NULL吧?<BR><BR>现在有了SampleGrabber还不行.还要设置SampleGrabber的数据采集类型:<BR>pSample->SetMediaType(...);<BR>pSample->BufferSamples(FALSE);<BR>pSample->SetOneShot( FALSE );<BR>pSample->SetCallback( this, 1 );<BR><BR>然后你必须自己写一个类, 从ISampleGrabberCB接口派生, 然后声明一个这个类的对象, 用它做SampleGrabber的回调函数,具体的例子参考DShow例子DXSDK\samples\directshow\editing\SampGrabCB<BR><BR>好了, 你可以试试.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -