2

我正在尝试设置上述来源之一来捕获 Windows 机器上的屏幕。除了一个重要细节外,一切都很好:当管道正在播放时,我无法更改任一 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 将屏幕截图从托管代码推送到管道中,但是性能不是很好。

4

0 回答 0