wxkey 2023-06-20 10:04 采纳率: 0%
浏览 82
已结题

多显示器单视频多屏幕播放

实现一个类似壁纸引擎功能。
在多显示器扩展模式下,一个视频窗口在主显示器workerw下播放,
另一个显示器没有视频窗口,却能同时播放这个视频,
看情况是通过直接渲染,大家有人知道是什么原理吗?

  • 写回答

11条回答 默认 最新

  • PhoenixRiser 2023-06-20 10:09
    关注
    获得0.60元问题酬金

    TechWhizKid参考GPT回答:

    • 要用DirectX或OpenGL进行视频渲染,以及Windows API来处理窗口和多显示器的相关事务。

    大致方向:

    1. 获取显示器信息:先用Windows API,如 EnumDisplayMonitorsGetMonitorInfo 来获取所有连接的显示器的信息。

    2. 创建窗口:然后对于每个显示器,创建一个全屏窗口。可以用 CreateWindowEx API,并设置窗口样式为 WS_POPUP,同时设置窗口大小等于显示器的分辨率。然后用 SetParent API将窗口的父窗口设置为workerw窗口。

    3. 视频播放和渲染:这一步取决于你的视频播放和渲染技术。可能要用如DirectShow、FFmpeg、GStreamer等库来播放视频,并用DirectX或OpenGL来进行视频渲染。你要创建一个渲染上下文,绑定到你为每个显示器创建的窗口。然后可以将视频帧渲染到这个上下文。

    4. 复制或共享渲染上下文:至于如何让视频同时在两个显示器上播放,你要复制或共享你的渲染上下文。你可能要用像wglShareLists这样的函数,或者你可能要直接复制你的渲染结果。

    至于直接渲染,如果你指的是跨显示器直接渲染相同的内容,那么这应该是通过复制或共享渲染上下文实现的。如果你指的是不通过窗口系统直接渲染到显示器,那么这可能要更深入的系统编程知识,并且可能会受到Windows的限制。

    评论

报告相同问题?

问题事件

  • 系统已结题 6月28日
  • 创建了问题 6月20日