2013-01-21 36 views
1

我正在構建一個應用程序,它是記錄我的桌面必不可少的。我決定使用gstreamer,因爲我使用C++來開發我的應用程序。 我使用ximagesrc來記錄我的dekstop。 這是在代碼行的外觀屏幕錄製gstreamer性能問題

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內存的雙核電腦。但是我遇到的問題是,當我播放錄製的視頻時,播放時有時會掛起。我完全不能依靠這個。有沒有解決方法?還是我在這裏做錯了什麼?

回答

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的性能並改善性能。

+0

通常screencast軟件不會進行實時壓縮。取而代之的是原始數據被保存直到記錄結束。只有這樣才能壓縮視頻。 –