Gstreamer dx9screencapsrc / gdiscreencapsrc在播放时更改捕获的区域

时间:2012-09-27 07:56:13

标签: c# screenshot video-capture capture gstreamer

我正在尝试设置上述某个来源以捕获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邮件列表上发布,但没有回复。

BTW:解决方法是使用Appsink将屏幕提示从托管代码推送到管道中,但性能不是很好。

0 个答案:

没有答案