0

可能这很容易,但我找不到合适的词让谷歌吐出我需要的东西。我有一个自定义派生的 QGLWidget 并想做一些视频捕获以将其展示给其他人。

捕获适用于所有其他小部件(按钮、复选框、...),但我的 GLWidget 保持空白(对于普通用户来说,它是完全响应的)。当我将鼠标悬停在它上面时,鼠标的矩形区域会在小部件上重新绘制。

我如何告诉我的小部件/窗口系统在动作捕捉时刷新整个区域?

可能与同样的问题有关:我曾经在 TeamViewer 中进行过一次会话,其中发生了同样的问题。

编辑

当我使用 Qt Demo Hello GL 并捕获它时,也会出现同样的问题。

编辑2

我尝试了我的一个 GLUT 演示,但它们也不起作用,我还阅读了有关记录 opengl 输出的问题,但这是在 Windows 机器上。也许linux上也有问题?

顺便提一句。我使用 xvidcap 进行捕获。

4

2 回答 2

1

顺便提一句。我使用 xvidcap 进行捕获。

我不确定,但 IIRC xvidcap 仅使用 Xdamage 扩展来抓取哪些程序报告为呈现新的。OpenGL 操作不设置损坏标志。

我个人使用 ffmpeg 在 X11 下进行截屏。沿线的东西

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

例如

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

我发现mjpeg或编解码ljpegx264 / fast lossless非常适合这项任务。

于 2011-09-14T22:07:33.493 回答
0

这有点猜测,因为我对 GL 小部件没有什么特别的经验,但我会尝试的第一件事是在你的小部件上设置不透明的绘制事件标志:

setAttribute( Qt::WA_OpaquePaintEvent )
于 2011-09-14T15:46:56.847 回答