大虾帮我看看这个Direct show 的错误?为什么会出错???????????????

mjs2000 2001-12-04 01:21:45
源代码如下:
DWORD dwERR=0;
dwERR=GetLastError(); //调试时这里是 dwERR=0
hr = CoCreateInstance(CLSID_CMpegVideoCodec,NULL,CLSCTX_INPROC_SERVER,IID_IBaseFilter,(void **)&m_MpegVideoDecoder ); //这里的hr=0 既成功的执行
dwERR=GetLastError();
//这里出了问题 dwERR是2
//在MSDN中是:The system cannot find the file specified
//这是为什么 CoCreateInstance正确执行,却获得最后错误?????

...全文
1921 32 打赏 收藏 转发到动态 举报
写回复
用AI写文章
32 条回复
切换为时间正序
请发表友善的回复…
发表回复
mjs2000 2001-12-14
  • 打赏
  • 举报
回复
问题虽然还没有解决,但是我还是想把分数给大家,谢谢大家的热心
WinterSeo 2001-12-09
  • 打赏
  • 举报
回复
求助,先给95分,如果答案详细的话,还可以再开几个贴子给300分!
请详细点回答!谢谢!(下面几个贴子是同一个问题,为了多给分才开多个的)
http://www.csdn.net/expert/topic/410/410427.shtm
http://www.csdn.net/expert/topic/410/410433.shtm
http://www.csdn.net/expert/topic/410/410493.shtm
lwglucky 2001-12-08
  • 打赏
  • 举报
回复
还有,在 vc中怎么调试filter.....我在graph edit中测试的。。。
由于不知道调试,也不知道那里出错了。。。
black_fox 2001-12-07
  • 打赏
  • 举报
回复
学习学习。。呵呵
lemon_zc1949 2001-12-06
  • 打赏
  • 举报
回复
你用了怎么久的VC难道不懂得调试吗?你自己完全可以作个实验三,把所要的Filer的pin全部列表出来,然后再把这个Filter的input pin 和output pin全部列表出来三,DirectShow 的SDK有一个Sample-------->JukeBox,你看看别人是怎么枚举的三。如果你再搞不定,你把你的E_mail给我,我给你写个模块。Are you OK?
xtky_limi 2001-12-05
  • 打赏
  • 举报
回复
旁听
mjs2000 2001-12-05
  • 打赏
  • 举报
回复
to lemon_zc1949(lemon)
你说的对我是用第三方的filter,我不知道我的原过滤器怎么和我的mpeg one stream spliter连接起来
lemon_zc1949 2001-12-05
  • 打赏
  • 举报
回复
只要是标准的视频捕获卡就应该兼容MS的不依赖于硬件的编程接口,(Graph Edit)中Insert Filter中不是有一款Video Capture Sources吗?如果里面也没有相应的设备的源Filter,则使用DirectShow来智能的实现视频捕获是不可能的,这个时候就需要第三方的Filter(*.ax)了.

你对Com的原理还不了解,其实不是你添加接口,而是从Com对象中导出这个对象提供的相应接口,你的过程没有错,是对的,我也习惯一创建了Filter Graph COM对象后就把需要的接口都获得,然后在后面集中一起调用各自的Release().

关于硬件的东西我不太清楚,个人力量有限,Sorry.
mjs2000 2001-12-05
  • 打赏
  • 举报
回复
我建立预览的过程
首先 建立图(IGraphBuilder)-->添加源过滤器(IBaseFilter:Reader)--->添加mpeg one 分离器(mpeg one stream filter)--->添加mpeg one video decoder filter--->mpeg one audio decoder filter--->video render filter-->audio render filter

建立图后:我添加了这三个接口
pigb->QueryInterface(IID_IMediaControl, (void **)&pimc);
pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex);
pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw);
不知道是否我的过程有问题

注:源过滤器是驱动提供商提供的 通过接口IID_ZZMUX
AddBuffer()向源过滤其中提供数据。

mjs2000 2001-12-05
  • 打赏
  • 举报
回复
to lemon_zc1949(lemon)
我的硬件设备用direct 8.0 中的amcap程序都找不到,如果能够找到我想应该可以
采集卡是4路mpeg one 输出, 客户提供了驱动程序和一个源过滤器
(graphedit) 但是我在源过滤连接mpeg one stream spliter的时候连接不上为什么,难道驱动有问题?
magmng 2001-12-05
  • 打赏
  • 举报
回复
有没有人用过传输用的 RTP Filter(好象是这个),我一直都搞不定!
lwglucky 2001-12-05
  • 打赏
  • 举报
回复
我也碰到这个问题了,帮忙顶一下,估计要自己写pin--真是很烦琐。
mjs2000 2001-12-05
  • 打赏
  • 举报
回复
怎么产看其类型是否一样??
lemon_zc1949 2001-12-05
  • 打赏
  • 举报
回复
mpeg one stream spliter是个filter ,它的input pin所能支持的stream type是否和源filter的output pin所支持的stream type画等号??????
lemon_zc1949 2001-12-05
  • 打赏
  • 举报
回复
如果你使用ICaptureGraphBuilder2那么你可以按sdk上说的步凑来做三。我猜可能是pin上的stream type不一致,所以在builder graph时出错了。
lemon_zc1949 2001-12-04
  • 打赏
  • 举报
回复
to mjs2000:老大,我拜托你了,你不能用ICaptureGraphBuilder2接口来做视频的捕获吗?
我才做了的,我们公司老总给我个视频捕获卡就要我做广播,我靠,连说明书的没有,只好看MS 的编程接口,因为它是不依赖以硬件的,你应该看看MSDN的。最简单的办法就是使用media encoder sdk来做,它提供了捕获设置功能,可让你的用户自行设置(这样可以解决万一一个PC上给你插了2个捕获卡)。我也自己通过编程来做Filter graph,虽然成功了,但是太烦了,而且不是智能的,graph中的filter被我编程时定死了。真正聪明的Client才不用别的,用media encoder, media service, media format , media player就可以了。
lemon_zc1949 2001-12-04
  • 打赏
  • 举报
回复
你可以先用GrahpEdit实验一下下在做三。你可以用IBaseFilter::EnumPins()获得这个filter的IEnumPins接口,然后在用IEnumPins::Next()枚举出改filter的所有pin,这些Pin是通过IPin接口提供给程序员的,你使用IPin::QureyPinInfo()可以获得该Pin的信息,信息是个PIN_INFO结构,下面你就可以得到它的名字,方向.你可以调用IPin::EnumMediaTypes()获得这个Pin的type枚举器IEnumMediaTypes接口,然后在调用IEnumMediaTypes::Next()扁历pin 的type,这些都是有层次结构的,记得要适当的调用使用过的接口的Release()函数。
mjs2000 2001-12-04
  • 打赏
  • 举报
回复
源过滤器是通过一个接口 AddBuffer向源过滤器中添加数据
to lemon_zc1949(lemon) 能否说的详细点?
lemon_zc1949 2001-12-04
  • 打赏
  • 举报
回复
Pin 上的 Stream type 不匹配
mjs2000 2001-12-04
  • 打赏
  • 举报
回复
我用的是驱动程序提供商提供的原过滤器

但是我在源过滤连接mpeg one stream spliter的时候连接不上 为什么,难道驱动有问题?
加载更多回复(12)

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧