gpt4 book ai didi

c# - 如何使用 directshow 在多台显示器上同步播放多个视频?

转载 作者:太空狗 更新时间:2023-10-29 21:11:24 26 4
gpt4 key购买 nike

我已经成功地使用 c# 的 directshowlib 使用具有多个流的单个视频窗口同步播放多达 8 个视频。问题是视频窗口只在一个屏幕上播放——当我试图让它跨越多个屏幕时它不起作用。应用程序窗口跨度正确,但视频仅在一个屏幕上播放。有什么想法吗?

非常感谢。

最佳答案

我假设您正在使用具有多个输入引脚的 VMR。 VMR 将渲染到单个表面,需要在单个显示器上。您应该能够将流呈现到多个 VMR,每个 VMR 都放置在最大化窗口内的单独显示器上。

听起来好像所有流都在一个图中。您可以将它们分成不同的图形,每个图形都有一个源和一个渲染器。同步启动图形意味着使用 IMediaFilter::Run 而不是 IMediaControl::Run:

  • 选择一个图作为主图。
  • 确保主人有时钟。这通常在激活时完成,但您可以通过在图表上调用 SetDefaultSyncSource 来强制它更早发生。
  • 查询 IMediaFilter 的图,使用 GetSyncSource 从主图中获取时钟,并使用 SetSyncSource 将其传递给其他图。
  • 暂停所有图表。
  • 等待 GetState 返回 S_OK(暂停完成)。
  • 从图表中获取时间并添加 10 毫秒左右。
  • 在所有图表上调用 IMediaFilter::Run,将这次(现在 + 10 毫秒)作为参数传递。

关于c# - 如何使用 directshow 在多台显示器上同步播放多个视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1299385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com