我试图在Linux中使用OpenGL和C ++在GLUT窗口中播放.flv文件,但我不知道从哪里开始。
有可能这样做吗?如果是这样,怎么样?
答案 0 :(得分:3)
这很容易。使用类似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 **,可能不值得努力。