⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_61675.htm

📁 vc
💻 HTM
字号:
<p>
序号:61675 发表者:唐特 发表日期:2003-11-21 09:12:29
<br>主题:截图出现了问题,大侠们帮忙看看
<br>内容:我用皇视卫星接收卡,收到了卫星节目,播放后,我用下面一段程序来截取一帧图象:<BR><BR>HRESULT hr;<BR>long size; <BR>long* image = NULL; <BR>long lWidth, lHeight; <BR><BR>pibv-&gt;GetVideoSize(&amp;lWidth, &amp;lHeight); <BR><BR>// determine size <BR>pibv-&gt;GetCurrentImage(&amp;size,image); <BR><BR>char* buffer = new char[size]; <BR><BR>hr = pibv-&gt;GetCurrentImage(&amp;size,(long*)buffer); <BR><BR>LPBITMAPINFOHEADER lpbi; <BR><BR>lpbi = (LPBITMAPINFOHEADER)buffer; <BR><BR>HDRAWDIB hdd;<BR>HDC hdc;<BR><BR>CClientDC ClientDC(this); <BR>hdc=ClientDC.GetSafeHdc();<BR>hdd=DrawDibOpen();<BR>DrawDibDraw(hdd,hdc,350,90,110,110,lpbi,(LPVOID)buffer,<BR>0,0,lWidth,lHeight,DDF_BACKGROUNDPAL);<BR><BR>现在的情况是这样,如果我播放的是一个录制好的mpg格式的文件,这段程序是没有问题的,它可以截取当前帧图象,并把图象压缩成110x110大小,粘贴在窗口的(350,90)坐标处.但是如果我播放的是卫星节目,就是直接用卫星接受卡接收到的节目,程序就会出问题.我发现问题的原因是第二个GetCurrentImage,就是那句hr = pibv-&gt;GetCurrentImage(&amp;size,(long*)buffer); 并没有成功的执行.返回的hr是unexpected error. 而且我发现,第一个GetCurrentImage得到的size的值好像也不对,如果播放用这个卫星卡录制出来的mpg文件,那么得到的size是1044520,如果播放卫星节目,得到的size才2*****,差不多才是1044520的1/4. 现在非常困惑,请大侠帮我想想可能的原因. <BR>
<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>回复者:gzast163 回复日期:2003-11-21 09:18:39
<br>内容:请看IBasicVideo::GetCurrentImage的说明:<BR>This method fails if the renderer is using DirectDraw acceleration. Unfortunately, this depends on the end-user's hardware configuration, so in practice this method is not reliable. A better way to obtain a sample from a stream in the graph is to use the ISampleGrabber interface.<BR><BR>通常采集卡的PREVIEW都是支持直接写屏的,如果是这样的话用这个GetCurrentImage函数就不保险了,MS建议你使用ISampleGrabber interface来做。我一般是用VMR9的抓图功能,一般都能成功。
<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 + -