1

我正在构建一个应用程序,其中必须记录我的桌面。我决定使用 gstreamer,因为我使用 c++ 开发我的应用程序。我使用 ximagesrc 来记录我的桌面。这就是代码中的行的样子

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 的双核计算机。但我遇到的问题是,当我播放录制的视频时,有时会播放,有时会挂起。我不能完全依赖这个。有什么解决办法吗?还是我在这里做错了什么?

4

1 回答 1

1

我在论坛上为 gstreamer 发布了同样的问题,我得到了一些很好的回应。其中之一提到将“use-damage=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 并提高了性能。

于 2013-01-24T12:33:32.027 回答