解决IBasicVideo::GetCurrentImage返回0x8000ffff(E_UNEXPECTED Catastrophic failure)错误

解决IBasicVideo::GetCurrentImage返回0x8000ffff(E_UNEXPECTED Catastrophic failure)错误经过查阅一番资料后,得到如下的解决方案:方案1:使用替代的接口ISampleGrabber,代替IBasicVideo,具体调用的函数为:ISampleGrabber::GetCurrentBuffer.可以参考文章:dshow中使用SampleGrabberfilter抓取图像。在我的开发环境win10+vs2013下没能找到ISampleGrabber接口;而在官方文档中提到ISa…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

经过查阅一番资料后,得到如下的解决方案:

  • 方案1:使用替代的接口ISampleGrabber,代替IBasicVideo,具体调用的函数为:ISampleGrabber::GetCurrentBuffer.可以参考文章:dshow中使用Sample Grabber filter抓取图像。在我的开发环境win10 + vs2013下没能找到ISampleGrabber接口;而在官方文档中提到ISampleGrabber接口已经被废弃。所以不建议使用此方案。顺便说一句,网上有方案解决找不到ISampleGrabber接口的问题,ISampleGrabber接口存在于QEdit.h中。
     
  • 方案二:使用 IVMRWindowlessControl9::GetCurrentImage;此方法需要用户自己释放它返回的内存。所以频繁的调用可能会有一定的问题。官方文档也有说明:This method can be called at any time, no matter what state the filter is in, whether running, stopped or paused. However, frequent calls to this method will degrade video playback performance. 所以在不频繁使用的情况下可以用此方案。
     
  • 方案三:还是使用IBasicVideo的接口。只不过修改底层的渲染器为VMR9,MS为了兼容问题,所以默认的情况下并不是使用VMR9渲染器。官方文档说明如下:

    Video Renderer only:

    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.

    Pause the Video Renderer before calling this method. Otherwise, the method returns VFW_E_NOT_PAUSED. Make sure that the pause operation has completed by calling IMediaControl::GetState; if the pause operation has not completed, the GetCurrentImage method returns E_UNEXPECTED. Depending on what data the source filter has available, the video renderer is not guaranteed to service this request. If no image is available, it returns E_FAIL.

    Video Mixing Renderer only:

    This method is reliable regardless of whether the VMR is using DirectDraw acceleration and regardless of the current graph state (running, stopped, or paused).

    Video Renderer and Video Mixing Renderer:

    To obtain the required buffer size to hold the image, call this method with a NULL pointer in the pDIBImage parameter. The method returns the required buffer size in the pBufferSize parameter. Allocate a buffer of that size and call the method again, with pDIBImage pointing to the buffer. On the second call, use pBufferSize to specify the buffer size. If the buffer is too small to hold the complete image, the method returns E_OUTOFMEMORY.

    If the method succeeds, the buffer is filled with the entire DIB image, including the BITMAPINFOHEADER structure, plus any palette entries and bit masks as defined in the Win32 BITMAPINFO structure. The format of the image depends on the type provided by the source filter, and cannot be specified in advance.

关于VM9的创建与使用可以参考:https://blog.csdn.net/a812073479/article/details/82994703

 

 

        

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189981.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • soapui的教程

    soapui的教程一.这里我安装的是5.2.1这个版本,安装之后按照我的操作步骤即可二.这里放入后台给你的接口,结尾应该是?wsdl如果没有你需要手动加上,否则会报错三:这个是成功界面四:如图,点开之后是这样的,在1的地方你需要输入对应的参数点击4进行查询,查询成功右侧会有对应的xml数据结果,具体参数需要输入什么,应用场景不同可以去问下后台这篇博客基本结合我的另一篇的ksoap2框架的博客一起使用…

  • 架构设计——ID生成器「建议收藏」

    架构设计——ID生成器「建议收藏」一、分布式ID发号器要求很明确:不同机器同一时间生成不同ip;同一机器不同时间生成不同IP;所以根据需求,可选变量有:机器(网卡、IP)+时间,随机数二、WhynotUUID?UUID的实现:算法的核心思想是结合机器的网卡、当地时间、一个随机数来生成UUID。优势:保证唯一性;本地调用,不需要rpcUUID的缺陷:1.UUID较长,占用内存空间;往往用字符串表示…

  • python中使用递归实现斐波那契数列

    python中使用递归实现斐波那契数列python中使用递归实现斐波那契数列python中使用递归实现斐波那契数列先来了解一下斐波那契数列(Fibonaccisequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)(n≥2,n∈N)在现代物理、

  • 彩色图像–伪彩处理 灰度图转伪彩色图像

    彩色图像–伪彩处理 灰度图转伪彩色图像

  • 各大型邮箱smtp服务器及端口收集

    各大型邮箱smtp服务器及端口收集

  • 到底如何区分什么是架构,框架,模式和平台_整体架构是什么意思

    到底如何区分什么是架构,框架,模式和平台_整体架构是什么意思区分什么是架构、框架、模式和平台,一直都感觉这几个词过于抽象和模糊,今天大家来说说到底什么是架构、框架、模式和平台?收集了的一些来自网上各自的定义和区分如下:来自冬眠的蛤蟆概念:设计模式<框架<架构<平台,从复用角度讲,设计模式是代码级复用、框架是模块级复用、架构是系统级复用、平台是企业应用级复用。

    2022年10月18日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号