我正在尝试基于DirectShow SDK中的pushsource示例创建DirectShow源过滤器。我的源滤波器基本上向视频输出一组位图,每个位图通常持续大约600毫秒。我已经设置了一个过滤器图形,它使用Async_reader和Wave Parser进行音频,我的新过滤器用于推送视频(过滤器是CSourceStream,我在FillBuffer函数中填充我的帧)。这些都连接到WMASFWriter以输出WMV。
我发现的是,有时对应关键帧间隔,视频会暂停一两秒钟。这在高清分辨率下似乎更糟糕,认为这可能是一个红色的鲱鱼。什么样的事情可能导致这个?它与我允许调用FillBuffer的频率有关(我的帧速率是30fps,所以我最终会重复相同的位图重复几帧)?
答案 0 :(得分:2)
常识(与具有相关效果的特定体验相反)表明关键帧的编码消耗太多带宽,并且余数不足以编码紧跟在关键帧之后的片段的移动。我认为这是CBR模式,也许VBR模式可以提供更好的编码。