IGraphBuilder::Render() 引发的错误:0x80040154 (REGDB_E_CLASSNOTREG)

最近搞毕业设计,研究起了DirectShow,看了一个网络传输MPEG视频的源码,编译运行,发现客户端接收的视频没法显示出来,但是写入的文件是可以被正确播放的。最后调试跟踪到是这一句出了问题:

HRESULT hr  = m_pGB->Render(m_pSourceReader->GetPin(0));

返回错误: hr 0x80040154 没有注册类

一开始在MSDN上搜索错误码 没有找到0x80040154的说明,于是在Google上搜索,只搜出了10几条相关内容,看了以后,说的好像是什么DLL没有注册,但是,这里用的都是程序中定义的类,没有什么外部导入的DLL的东西啊,觉得都好像都跟我的没有什么联系。有点郁闷。

接着,开始搜IGraphBuilder::Render函数,发现还是没有很有价值的东西。最后,直接搜m_pGB->Render(m_pSourceReader->GetPin(0)); 终于找到一条有价值的链接。说是由于Render智能连接使用了一些不正常的Filter(解释有点模糊,至少我不是太懂),可以尝试着往Filter Graph中先加入MPEG1 Stream Splitter,然后再调用Render去进行只能连接。我试了下,果然通了。

插入代码如下:

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值