0

好吧,我想利用 Windows Media Player 在它的视频窗口中运行 .exe 应用程序。例如,应用程序可以是全屏 DirectX 或 OpenGL 应用程序,您可以在操作系统上执行这些应用程序。

我想知道是否有这样的编解码器,以便我可以根据需要对其进行调整?或者也许有一个具有很好的调整能力但不是(完全)开源的?

(我问这个问题是因为这个问题:https ://superuser.com/questions/533730/how-to-run-an-directx-or-opengl-application-as-desktop-background )

4

2 回答 2

3

简单的回答:不。

复杂的答案:您的标题毫无意义,因为在那里您不会谈论播放 exe 文件,而是试图拦截“各种 API”并将它们神奇地转换为视频。

于 2013-01-14T06:32:14.437 回答
3

这可能是我很长时间以来读过的最奇怪的请求。首先是坏消息:不,没有开源编解码器可以在 Windows Media Player 的视频窗口中播放“.exe”生成的输出。“.exe”或更准确的PE文件(便携式可执行文件)包含程序代码,即被您的CPU解释为程序的数据。然而,视频不是程序,而是图像数据。

视频编解码器是在格式之间转换视频数据的程序。例如,它可以将压缩的 h.264 解码为适合显示的原始 RGB 数据。视频编解码器有一定的限制,例如它们解码一系列帧。

现在好消息:从技术上讲,编写这样的编解码器是可能的。不过,我无法使用 WMP 打开 .exe,因为 WMP 无法解释这些文件。但是您可以引入一个新的 FOURCC,一个标识特定视频编码格式的 4 字符代码,并使用该 FOURCC 注册一个特殊用途代码。然后,您使用该 FOURCC 创建一个特殊的 AVI 文件,其中包含对目标 .exe 的引用,而不是帧中的视频数据。当 WMP 尝试播放此文件时,它将启动此“编解码器”,而后者又可以启动 .exe。您需要在启动的应用程序和“编解码器”之间建立通信协议。必须创建一个离屏渲染表面,我会说进程之间共享的 PBuffer DC 最适合这个,即“编解码器” 创建 PBuffer 并且 .exe 在它之上创建一个 OpenGL 上下文。然后编解码器将 PBuffer 的内容作为解码后的视频帧传递给 WMP。


所以是的,可以完成这样的黑客攻击。但这会很丑陋和奇怪。

为什么不简单地为 WMP 编写一个可视化插件呢?那些也可以在视频窗口中运行,但它不需要如此丑陋的 hack。

于 2013-01-14T11:00:51.897 回答