我應該爲我的用戶提供一種非常簡單的方法,即從我的OpenGL應用程序的主窗口中捕獲視頻剪輯。我正在考慮添加用於啓動和停止捕獲的按鈕和/或鍵盤快捷鍵;當開始時,我可以要求一個文件名和其他選項,如果有的話。它必須在Windows(XP/Vista)下運行,但我也不想關閉我迄今爲止能夠保持開放的Linux門。從Windows中的OpenGL窗口捕獲視頻
該應用程序使用OpenGL片段和着色器程序,由此我絕對需要在最終的視頻中產生的效果。
它看起來對我來說,有可能是有可能滿足我的要求,甚至幾種不同的方法(但我真的不知道我應該在哪裏開始):
與喜歡的startRecording功能的編碼庫(文件名),stopRecording和captureFrame。我可以在每幀渲染(或每秒/三分之一)之後調用captureFrame()。如果這樣做會讓我的程序運行速度變慢,那不是一個真正的問題。
獨立的外部程序,可以從我的應用程序進行編程控制。畢竟,一個獨立的程序,可以而不是幾乎可以做到我需要的東西......但正如所說的,它應該是非常簡單的用戶操作,我也很感激無縫;我的應用程序通常全屏運行。此外,應該可以作爲我目前使用NSIS準備的應用程序的安裝包的一部分進行分發。
使用Windows API逐幀捕獲屏幕截圖,然後使用(例如)libraries mentioned here之一。似乎很容易找到如何在Windows中捕獲屏幕截圖的示例;然而,我很喜歡這樣的解決方案,它並不會強迫我在WinAPI級別上弄髒我的手。
使用OpenGL渲染到屏幕外目標,然後使用庫來產生視頻。我不知道這是否有可能,我擔心它可能不會是最輕微的痛苦之路。特別是,我不希望實際渲染根據視頻是否被捕獲而採取不同的執行路徑。此外,我會避免任何可能會降低正常非捕獲模式下的幀速率的內容。
如果解決方案在這個詞的任何一個意義上都是免費的,那麼這會很好,但這不是絕對的要求。一般來說,越少膨脹越好。另一方面,由於原因超出這個問題,不幸的是,我無法鏈接任何GPL專用代碼。
關於文件格式,我不能指望我的用戶開始使用Google的任何編解碼器,但只要還顯示視頻是一個基本級別的Windows用戶很容易,我真的不關心什麼格式是。但是,如果可以控制輸出的壓縮質量,那將是非常好的。
只是爲了澄清:我不需要從像攝像機外部設備捕獲視頻,我也不是在鼠標的移動我真正感興趣的,即使讓他們沒有任何傷害。對音頻沒有要求;該應用程序不會產生任何噪音。
我使用Visual Studio 2008編寫C++,這個應用程序也受益於GLUT和GLUI。我對C++和鏈接庫以及類似的東西有着深刻的理解,但另一方面,對於我來說,OpenGL對我來說是非常新的:到目前爲止,我只學到了實際完成工作的必要位。
我並不需要一個解決方案超急,可以隨意把你的時間:)
是:LGPL沒問題。 – Reunanen 2008-09-30 20:22:11
glReadPixels()似乎是我需要的第一個問題,謝謝! – Reunanen 2008-09-30 20:37:20
@MikeF:該鏈接是胸圍 – 2011-11-17 09:26:27