2011-02-08 13 views
6

私は科学的シミュレーションを実行し、OpenGLウィンドウに視覚化を表示するCプログラムを持っています。私はこの視覚化をビデオにして、最終的にはYouTubeに行くつもりです。OpenGL Cプログラムからビデオを生成

質問: C/OpenGLプログラムからビデオを作成する最も良い方法は何ですか?

これまでのやり方は、画面キャプチャプログラムを使用することですが、これは非常に労力がかかります(画面キャプチャプログラムの開始/停止、ビデオファイルの保存などが必要です) 。 Cプログラムの中からビデオを作るプロセスを自動化する方法があるはずです。それから私は一晩中それを実行しておくことができ、午前中に見て20ビデオを持って、YouTubeに置くために最高のものを選択します。

YouTube recommend「640x480解像度のMPEG4(Divx、Xvid)形式」。

私はGLUT 3.7.6_3を使用しています(違いがある場合)。良い理由があれば、私はウィンドウシステムを変更することができます。

私はWindows(XP)を使用していますので、Windowsで動作する回答が好きですが、Linuxの回答もOKです。 Windows上で簡単にビデオを扱うことができない場合は、Linuxを使用できます。ビデオの各フレームに.pngイメージを作成し、Linux上で "mencoder"を使用してそれらを一緒にステッチする友人がいます。

あなたはglReadPixelsの機能を使用することができます
+1

個々のフレームを保存し、外部ツール(おそらくmencoderは良い推測です)でビデオに変換することは、私にとって最善の解決策のように聞こえます。 –

+0

ここでのトピックの説明をご覧ください:http://stackoverflow.com/questions/154730/capturing-video-out-of-an-opengl-window-in-windows – dm76

+0

@DavidM:ありがとう、本当に便利です。 –

答えて

8

exampleを参照)

しかし、あなたが表示しようとしているものは、単純なオブジェクト(すなわち、球、棒、等。)で構成されている場合、私は考え、「輸出」の各フレームPOV-rayファイルに書き込んでレンダリングし、これらの画像からビデオを作ります。あなたはそのようなより高い品質に達するでしょう。

+0

この特定のインスタンスではあまり重要ではありませんが、PBOがDMAを許可するので、PBOを使用する方がglReadPixels()より効率的です。 –

1

FRAPSのようなサードパーティアプリケーションを使用してください。

Frapsは、毎秒120のフレームに1からカスタムフレームレートで2560×1600に をオーディオとビデオのアップ をキャプチャすることができます!

すべての映画は未処理の の品質で記録されています。

サイトにビデオサンプルがあります。彼らは良いようです。

EDIT:

あなたはsystem("C:\screen_recorder_app.exe -params")のようにそれを呼び出すことによって、あなたのCアプリケーションからの画面を録画するためのツールを実行する可能性があります。チェックしてくださいcamstudio、それはコマンドラインのバージョンがあります。

+0

ありがとうございますが、これはちょうど通常のスクリーンキャプチャプログラムと思われます。これをCプログラムから実行できますか? –

+0

@Adam答えを更新しました。 – karlphillip

関連する問題