linux - OpenGL窗口视频采集问题

标签 linux opengl screen-capture qglwidget

可能这很容易,但我找不到合适的词让谷歌吐出我需要的东西。 我有一个自定义派生的 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

我发现 mjpegljpegx264/fast lossless 编解码器非常适合这项任务。

关于linux - OpenGL窗口视频采集问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7418537/

相关文章:

linux - 在特定数量的 cpu 上运行 TBB 代码

performance - OpenGL在渲染“虚拟画廊”(纹理)方面的性能

c++ - 用于渲染 3d 球体的纹理坐标

php - 使用 PHP 从 html 网页生成 jpg 或 png

linux - 高效读取XBMC渲染的屏幕内容的平均颜色

c# - Windows服务屏幕捕获返回黑屏

Linux脚本备份数据并将文件复制到另一台服务器

linux - 在 OS X 下运行 Linux 二进制文件

linux - Linux Container 可以跑在虚拟机上吗?

c++ - 如何使用控制台窗口中的输入顶点在 glut 中绘制多边形?