一些背景知识:
我正在尝试基于DirectShow SDK中的pushsource示例创建DirectShow源过滤器。这基本上输出一组位图,每个位图可以持续很长时间(例如30秒)到视频。我已经设置了一个过滤器图表,它使用Async_reader和Wave Parser进行音频,我的新过滤器用于推送视频(过滤器是CSourceStream,我在FillBuffer函数中填充我的帧)。这些都连接到WMASFWriter以输出WMV。
问题:
当我尝试搜索生成的视频时,我必须等到位图的开始时间才会显示。例如,如果我当前正在看到位图4并跳回到显示位图2的时间,则视频输出将不会改变,直到第三个位图开始。最初我想知道我是否不允许足够的FillBuffer调用(因为目前每个位图只有一次)但是我已经注意到当音频轨道非常短(也许只有一秒钟)时,我可以通过视频如预期。是否有另一种方法我应该将音频引入过滤器图形?在呈现WMV时,是否需要执行某种索引?我有点亏......
答案 0 :(得分:1)
您可能需要将索引作为后处理步骤。尝试使用Windows Media Encoder SDK中的Windows Media文件编辑器对其进行索引,看看这是否会改善搜索。
减少编码器配置文件中的关键帧间隔可以改善搜索。这可以在SDK中的Windows Media Profile Editor中完成。请注意,这将导致文件大小增加。