0

我构建了一个 DirectShow Video 渲染器来捕获具有VIDEOINFOHEADER2as 视频格式的帧(这对于内置的抓取器是不可能的)。该类派生自CBaseVideoRenderer并实现所需的基本方法。CheckMediaTypeSetMediaType被称为,以及OnStartStreaming。然而DoRenderSample永远不会被调用,因为流立即结束。有趣的是,在我的图中,音频是由 DirectSound 渲染器渲染的,即有数据。

我应该补充一点,我的图表有一个“实时源”,即 BDA DVB-S。如果我添加一个 EVR 而不是我的渲染器,一切正常,即播放声音和视频。

这里有什么问题?渲染器从实时源接收数据是否有特殊要求?

更新 1:我应该补充一点,如果我在 GraphEdit 中运行我的图表,它也会播放声音,但会发出一条错误消息(仅限我的渲染器,而不是 EVR):“图表无法更改状态。至少其中一个操作中涉及的引脚已连接。(返回代码:0x80040204)“我认为这是问题的一部分,但不幸的是我不明白它的含义或我应该在我的代码中更改什么。

更新 2:根据要求,我的图表的 ROT 条目(点击放大):

来自 ROT 的图表

4

0 回答 0