如何在C ++ OpenGL应用程序中播放FLV文件?

时间:2011-06-24 09:43:41

标签: c++ flash opengl flv

我试图在Linux中使用OpenGL和C ++在GLUT窗口中播放.flv文件,但我不知道从哪里开始。

有可能这样做吗?如果是这样,怎么样?

3 个答案:

答案 0 :(得分:3)

确保您的意思是.flv而不是.swf

这很容易。使用类似libavcodec的内容解码视频,您可以将原始帧用作纹理。

答案 1 :(得分:1)

如果你真的想这样做,请查看Gnash的源代码。他们是一个使用OpenGL的渲染器。但是,渲染只是作业的一小部分,您还必须解码音频/视频,运行动作脚本等..以便运行Flash文件。

它非常复杂,即使Adobe也没有设法做到正确:)

答案 2 :(得分:0)

如果您想播放一些视频,请查看@ Banthar的答案,否则:


OpenGL是一个简洁的绘图API。它为你提供了相当于“钢笔和画笔”的计算机来绘制一些帧缓冲。期。没有更高级别的功能。

将它复制成一件非常复杂的事情。它由矢量几何对象系统,脚本引擎(ActionScript),提供声音和视频解压缩等组成。所有这一切都必须由SWF播放器支持。 ATM只有一个功能齐全的SWF播放器,这就是Adobe制作的。有免费的替代品,但几个主要版本(Lightspark,Gnash)的官方flash播放器背后。

所以最可行的方法是通过插件界面在程序中加载Flash播放器浏览器插件,提供它,浏览器提供给插件的内容(DOM,HTTP传输等)并将插件渲染到一个屏幕外缓冲区,然后您将其复制到OpenGL上下文。但那效率不高。

TL; DR:复杂为sh **,可能不值得努力。