2011-09-14 5 views
0

おそらくこれは非常に簡単ですが、私は必要なものを吐き出すためにGoogleのための正しい言葉を見つけることができません。 私はカスタムの派生QGLWidgetを持っていて、それを他の人に見せるためにビデオキャプチャをしたいと思っています。OpenGLのウィンドウのビデオキャプチャの問題

他のすべてのウィジェット(ボタン、チェックボックスなど)ではキャプチャがうまく動作しますが、GLWidgetは空白のままです(通常のユーザは完全に反応します)。マウスの上にマウスを置くと、マウスの長方形の領域がウィジェットに再描画されます。

私のウィジェット/ Windowsシステムに、モーションキャプチャ時に領域全体を更新するように伝えるにはどうすればよいですか?

おそらく、同じ問題が発生したTeamViewerでセッションを作成しました。

私は同じ問題があるQtのデモこんにちはGLを使用して、それをキャプチャ

EDIT。

EDIT2

私は私のGLUTデモの1を試してみましたが、彼らはどちらか動作しませんでした、 も、私は、OpenGLの出力を記録する問題について読むが、これはWindowsマシン上にありました。 多分linuxにも問題がありますか?

Btw。キャプチャにはxvidcapを使用します。

+0

バッファが更新されないようです。 – blueskin

答えて

1

Btw。キャプチャにはxvidcapを使用します。

私はわかりませんが、IIRC xvidcapはXdamage拡張機能を使用して、どのプログラムが新しいものとしてレポートされているかを把握しています。 OpenGL操作では、ダメージフラグは設定されません。

私は個人的にX11のスクリーンキャプチャにffmpegを使用します。線に沿って何か

ffmpeg -f x11grab -r 18 -s 800x600 -i :0+0,0 -vcodec mjpeg out.avi 

例えば

ffmpeg -f x11grab -r $FRAMERATE -s $WIDTHx$HEIGHT -i $DISPLAY+$XOFFSET,$YOFFSET -vcodec ... -b -y output_file 

は私がmjpegljpegまたはx264/fast losslessコーデックは、この作業に適している見つけました。

+0

ffmpegのアドバイスをありがとう、私はそれを試してみましょう。しかし、これはTeamViewerの問題を解決しません。あなたはGL Widgetエリアのダメージフラグをどのように設定できるのか知っていますか? – Nobody

+0

@Nobody:Qt QGLWidget自体を変更することで唯一の唯一の解決策がわかります。本当に、私は正確に伝えるためにソースコードを見なければなりません。 – datenwolf

0

私は特にGLウィジェットとの経験がほとんどないので、これは推測のビットですが、私はしようとするだろう最初のものは、あなたのウィジェットに不透明なペイントイベントフラグを設定するために、次のようになります。

setAttribute(Qt::WA_OpaquePaintEvent) 
+0

ウィジェットのコンストラクタでこれを書きましたが、何も変更されませんでした。 – Nobody