2011-06-24 105 views
1

我想在Linux中使用OpenGL和C++在GLUT窗口中播放.flv文件,但我不知道從哪裏開始。如何在C++ OpenGL應用程序中播放FLV文件?

可以做到這一點嗎?如果是這樣,怎麼樣?

+0

食人魔3D引擎有插件,可以播放Flash視頻。這可以成爲你的出發點。 – n0rd

回答

0

如果你要玩只是一些視頻,看看@ Banthar的回答,否則:


OpenGL是一個沒有廉價的繪圖API。它爲您提供了計算機上的「筆和畫筆」,用於繪製一些幀緩衝區。期。沒有更高層次的功能。

閃光它是一件非常複雜的事情。它由向量幾何對象系統,腳本引擎(ActionScript),聲音和視頻解壓縮等組成。所有這些都必須由SWF播放器支持。 ATM只有一個全功能的SWF播放器,這是Adobe製作的。有免費的選擇,但是幾個主要版本(Lightspark,Gnash)的官方Flash Player的背後。

因此,最可行的方法是通過插件接口在您的程序中加載Flash播放器瀏覽器插件,提供它,提供給插件(DOM,HTTP傳輸等)的瀏覽器以及插件呈現到屏幕緩衝區,然後您將其複製到OpenGL上下文。但這不是非常有效。

TL; DR:複雜爲sh **,可能不值得。

1

如果你真的想這樣做,請查看Gnash的源代碼。他們有一個使用OpenGL的渲染器。但是,渲染只是工作的一小部分,您還必須解碼音頻/視頻,運行actionscript等,才能運行Flash文件。

它如此複雜,甚至的Adobe沒能作出正確的:)

3

確保您的意思是不是.flv.swf

這很容易。使用類似libavcodec的視頻解碼視頻,您可以使用原始幀作爲紋理。

+1

哦,你說得對,OP顯然意味着閃光*視頻*。這可以做到。 – datenwolf