屏幕记录gstreamer性能问题

屏幕记录gstreamer性能问题,gstreamer,Gstreamer,我正在构建一个应用程序,其中记录我的桌面是必不可少的。因为我使用C++开发了我的应用程序,所以我决定使用gStuffER。 我使用ximagesrc记录我的dekstop。 这就是代码中的行的外观 gst_parse_launch("ximagesrc ! queue ! videoscale ! video/x-raw-rgb,width=640,height=480,framerate=30/1 ! queue ! ffmpegcolorspace ! theoraenc ! queue !

我正在构建一个应用程序,其中记录我的桌面是必不可少的。因为我使用C++开发了我的应用程序,所以我决定使用gStuffER。 我使用ximagesrc记录我的dekstop。 这就是代码中的行的外观

gst_parse_launch("ximagesrc ! queue ! videoscale ! video/x-raw-rgb,width=640,height=480,framerate=30/1 ! queue ! ffmpegcolorspace ! theoraenc ! queue ! oggmux ! filesink location=test.ogg",&error);

我能在桌面上录音。我使用的是双核计算机,内存为2GB。但我的问题是,当我播放录制的视频时,它会播放,有时会挂起。我不能完全依靠这一点。有什么解决办法吗?还是我做错了什么

我在gstreamer论坛上发布了同样的问题,得到了一些很好的回复。 其中一个提到使用损害=0与ximagesrc。我还降低了帧速率。它看起来像这样

gst_parse_launch("ximagesrc use-damage=0 ! queue ! videoscale ! video/x-raw-rgb,width=640,height=480,framerate=10/1 ! queue ! ffmpegcolorspace ! theoraenc ! queue ! oggmux ! filesink location=test.ogg",&error);

这台机器运转得很好,此后机器就没有挂起。我认为这主要是因为,当使用use damage=0时,它会发送屏幕的更新,而不是发送整个屏幕。因此,它也减少了cpu,提高了性能

通常,screencast软件不进行实时压缩。而是保存原始数据,直到录制结束。只有到那时,画面才会被压缩。