我正在尝试设置上述某个来源以捕获Windows计算机上的屏幕。除了一个重要的细节之外,一切都很好:在管道正在播放时,我无法在src中更改捕获窗口的坐标。 我目前正在使用C#+ Gstreamer-Sharp,但我已经在考虑使用原生C包装。
这就是我做的......
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邮件列表上发布,但没有回复。
BTW:解决方法是使用Appsink将屏幕提示从托管代码推送到管道中,但性能不是很好。