1

デスクトップを記録することが不可欠なアプリケーションを構築しています。アプリケーションの開発に c++ を使用しているため、gstreamer を使用することにしました。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 のフォーラムに同じ質問を投稿したところ、良い回答が得られました。そのうちの 1 つは、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も削減され、パフォーマンスが向上します。

于 2013-01-24T12:33:32.027 に答える