0

我很高兴改进我的 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 并且AM_MEDIA_TYPE mt;我用来获取每秒帧数的相应格式类型为空。(pbFormat 为空)。

我是否无意中安装/卸载了一些重要的东西?
你听说过类似的问题吗?
正如我所说,几天前,相同的视频和源代码运行良好(我对现在的更改发表了评论)。
我想给你更多的源代码,但它有点长,但如果你认为它会有所帮助,我当然会添加它。

问候,
朱利安

这是源代码:http
://pastebin.com/jMdWejH9 当然这只是整个代码的一部分,但我认为这是主要部分,因为这里插入了所有过滤器。
请记住,这实际上直到几天前才起作用!^^
第一部分是变量声明(据我所知,所有重要的变量,第二部分是调用的函数)

4

1 回答 1

1

如果您在 DirectShow 中渲染文件,框架将使用系统中安装的编解码器/过滤器。如果您删除某些编解码器,则需要另一个或中断,因为它无法呈现。要了解框架使用的过滤器,您可以尝试在 GraphEdit 或GraphStudioNext中呈现文件。(只需将文件放在这些程序之一上并查看过滤器图)。我们使用编解码器包ffdshow-tryouts播放器的Haali Media Splitter获得了最好的结果。

于 2012-11-13T12:09:02.787 回答