我很乐意改进我的C ++程序,我通过directshow阅读视频。现在我也试着写一些也很好用的视频
然后寻找合适的编解码器(想到vob / ogg)...
然而,突然今天视频显示得非常慢
现在我卸载了之前安装的任何其他编解码器,视频根本无法播放
原因似乎是CComQIPtr< IMediaSeeking, &IID_IMediaSeeking > pSeeking( pGraph );
而hr = pSeeking->SetPositions( &Startzeit, AM_SEEKING_AbsolutePositioning,NULL, AM_SEEKING_NoPositioning );
给出了错误,当时不支持SetPosition ...随时可以实际执行。
同时hr=pSeeking->GetDuration(&duration)
返回0并且我用来获取framepersecond的相应AM_MEDIA_TYPE mt;
具有空格式类型。 (pbFormat是Null)。
我是否无意中安装/卸载了重要的东西?
你听说过类似的问题了吗?
正如我所说的那样,几天前相同的视频和源代码工作正常(我现在通过更改来评论)
我想给你更多的源代码,但它有点长,但如果你认为它会有所帮助,我当然会添加它。
问候,
朱利安
以下是源代码:http://pastebin.com/jMdWejH9
它当然只是整个代码的一部分,但我认为这是主要部分,因为这里插入了所有过滤器
请记住,这实际上有效,直到前几天!^^
第一部分是变量deklaration(所有重要的变量就像我所知道的那样,第二部分是被调用的函数)
答案 0 :(得分:1)
如果在DirectShow中呈现文件,框架将使用系统中安装的编解码器/过滤器。如果你删除一些编解码器,它需要另一个或中断,因为它无法呈现。要了解框架使用的过滤器,您可以尝试在GraphEdit或GraphStudioNext中呈现文件。 (只需将文件放在其中一个程序中,然后查看filtergraph)。我们使用编解码器包ffdshow-tryouts获得了最佳效果,Haali Media Splitter获得了player。