有没有可以“播放”.exe文件的开源视频编解码器?

时间:2013-01-14 06:25:53

标签: windows opengl directx fullscreen codec

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

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

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

2 个答案:

答案 0 :(得分:3)

简单回答:不。

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

答案 1 :(得分:2)

这可能是我在很长一段时间内读过的最奇怪的要求。首先是坏消息:不,没有开源编解码器可以播放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编写可视化插件?那些也在视频窗口中运行,但它不需要这么丑陋的黑客。