Windowsマシンで画面をキャプチャするために、上記のソースの1つを設定しようとしています。1つの重要な詳細を除けば、すべてが正常に機能します。パイプラインの再生中は、どちらのsrcでもキャプチャされたウィンドウの座標を変更できません。現在、C#+ Gstreamer-Sharpを使用していますが、ネイティブCラッパーをすでに検討しています。
- 再生中に上記のプラグインを使用してウィンドウの位置を変更できるようにする必要がありますか?
- はいの場合、これはGstreamer-sharpに関連する問題である可能性がありますか?
- または、パイプ内の要素の値を単に変更する以外の手順が必要ですか?
これが私がすることです...
var pipeline = new Gst.Pipeline();
screenCapSource = Gst.ElementFactory.Make("gdiscreencapsrc", "ScreencapSource") as Gst.Base.PushSrc;
SetCapWindow(0,0,320,240); //<- works
//Capsfilter...
//X264 encoder
//udpsink
//link...
//launch pipleline
//working fine...
//When pipeline is playing, this doesn't work.
//I never change the dimensions, only the position of the window - to no effect.
public void SetCapWindow(Int32 x, Int32 y, Int32 width, Int32 height){
screenCapSource["x"] = x;
screenCapSource["y"] = y;
screenCapSource["width"] = width;
screenCapSource["height"] = height;
}
この問題は、私や他の人によって以前にGstメーリングリストに投稿されましたが、返信はありません。
ところで:回避策は、Appsinkを使用して、スクリーンキャップをマネージコードからパイプラインにプッシュすることですが、パフォーマンスはそれほど良くありません。