将 VMR 同步到监视器的刷新率
[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayer、 IMFMediaEngine 和 媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]
在极少数情况下,你可能希望将视频呈现与监视器的刷新速率精确同步,以便每次监视器刷新时都显示一个新帧。 执行此操作的最可靠方法是创建自定义分配器表示器,该表示器使用翻转操作而不是 blit 操作将视频位写入主图面。 每次监视器刷新时都会调用“Flip”,因此,如果视频流不包含时间戳,VMR 将尽快呈现到主图面,但图面将阻止流,直到 Flip 操作完成。 这意味着,只要 CPU 没有超负荷,每次监视器刷新时,下一帧将始终在主图面中等待。 但是,如果其他 CPU 密集型进程正在运行,它可能会耗尽 DirectShow 流式处理线程,使其无法以足够快的速度将视频帧传送到主图面。
相关主题