可能这很容易,但我找不到合适的词让谷歌吐出我需要的东西。 我有一个自定义派生的 QGLWidget 并且想要进行一些视频捕获以将其显示给其他人。
捕获适用于所有其他小部件(按钮、复选框等),但我的 GLWidget 保持空白(对普通用户来说它是完全响应的)。当我将鼠标悬停在它上面时,鼠标的矩形区域会在小部件上重新绘制。
如何让我的小部件/窗口系统在运动捕捉时刷新整个区域?
可能与同一个问题有关:我曾经在 TeamViewer 中创建一个 session ,出现了同样的问题。
编辑
当我使用 Qt Demo Hello GL 并捕获它时,出现了同样的问题。
EDIT2
我尝试了一个 GLUT 演示,但它们也没有用, 我还读到了有关记录 opengl 输出的问题,但这是在 Windows 机器上。 也许在 linux 上也有问题?
顺便说一句。我使用 xvidcap 进行捕获。
最佳答案
Btw. I use xvidcap for the capturing.
我不确定,但 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
、ljpeg
或 x264/fast lossless
编解码器非常适合这项任务。
关于linux - OpenGL窗口视频采集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418537/