Hi all,
loving gstreamer and gstreamer Java, thanks Neil for it.
In this merge request:
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1855
Seungha Yang rewrited how to screen capture using GStreamer.
I have downloaded the win64 binary from the CI from here:
https://gitlab.freedesktop.org/seungha.yang/gst-plugins-bad/-/jobs/6185452/artifacts/download?file_type=archive
and trying to make it work with gstreamer java 1.3.0.
this code works well
GStreamerGrabber vc = new GStreamerGrabber();
Bin bin;
bin = Gst.parseBinFromDescription( "d3d11desktopdupsrc ! d3d11convert",true);
pipe = new Pipeline();
pipe.addMany(bin, vc.getElement());
Pipeline.linkMany(bin, vc.getElement());
JFrame f = new JFrame(Constants.SCREEN_GRABBER);
f.add(vc);
vc.setPreferredSize(new Dimension((int)screenSize.getWidth(), (int)screenSize.getHeight()));
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pipe.play();
f.setVisible(false);
public GStreamerGrabber(AppSink appsink) {
this.videosink = appsink;
videosink.set(Constants.EMIT_SIGNALS, true);
AppSinkListener listener = new AppSinkListener();
videosink.connect(listener);
String gstreamerPipeline = "video/x-raw(memory:D3D11Memory),";
gstreamerPipeline += framerate=30/1,";
StringBuilder caps = new StringBuilder(gstreamerPipeline);
videosink.setCaps(new Caps(caps.toString()));
setLayout(null);
setOpaque(true);
setBackground(Color.BLACK);
}
but as soon as I add the d3d11videosink
bin = Gst.parseBinFromDescription( "d3d11desktopdupsrc ! d3d11convert ! d3d11videosink",true);
it stops capturing without a real error msg. when using
d3d11videosink it opens a strange windows titled "D3D11renderer"
with a black image in it.
Does gstreamer java supports d3d11videosink?
If yes, what is the right way of using it?
I have the same strange behaviour using autovideosink,
how can I use videosink?
Thank you!
Davide