屏幕录制gstreamer性能问题

时间:2013-01-21 16:14:42

标签: gstreamer

我正在构建一个记录桌面必不可少的应用程序。我决定使用gstreamer,因为我使用c ++来开发我的应用程序。 我使用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);

我能够录制桌面。我正在使用2 GB Ram的双核计算机。但我遇到的问题是,当我播放录制的视频时,它播放时有时会挂起。我不能完全依赖这个。有什么解决方案吗?或者我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

我在gstreamer的论坛上发布了同样的问题,我得到了一些很好的回答。 其中一个提到使用ximagesrc使用“use-damage = 0”。而我也降低了帧速率。它看起来像这样。

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并且性能更好。