我正在尝试基于 DirectShow SDK 中的 pushsource 示例创建 DirectShow 源过滤器。我的源过滤器基本上输出一组位图,每个位图通常持续约 600 毫秒,到视频。我已经设置了一个过滤器图,它使用 Async_reader 和 Wave Parser 用于音频和我的新过滤器来推送视频(过滤器是 CSourceStream,我在 FillBuffer 函数中填充我的帧)。它们都连接到 WMASFWriter 以输出 WMV。
我发现有时与关键帧间隔相对应,视频会暂停一两秒。这在高清分辨率下似乎更糟,认为这可能是一个红鲱鱼。什么样的事情可能会导致这种情况?这是否与我允许调用 FillBuffer 的频率有关(我的帧速率是 30fps,所以我最终会得到相同的位图重复几帧)?