Pipewiresink from GStreamer either ended up crash or lost colors

I am trying to get gphoto2 to work without v4l2loopback module. I can get my camera stream to display through xvimagesink with VA-API and all, indicating that the issue is not from gphoto2 > GStreamer pipe:

gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc fd=0 ! jpegparse ! vaapijpegdec ! vaapipostproc ! videoconvert ! xvimagesink

However, when I tried to put the stream through pipewiresink :

gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc fd=0 ! jpegparse ! vaapijpegdec ! vaapipostproc ! videoconvert ! pipewiresink mode=provide stream-properties="properties,media.class=Video/Source,media.role=Camera" client-name=OMD

The command crashed immediately upon selecting the source (the device) in other apps, both in OBS and in Brave with PipeWire camera flag enabled from my testing.


I also tested pipewiresink with videotestsrc:

gst-launch-1.0 videotestsrc ! pipewiresink mode=provide stream-properties="properties,media.class=Video/Source,media.role=Camera" client-name=TEST

The stream turned black and white instead of the colored one.

Testing with xvimagesink has no coloring issue:

gst-launch-1.0 videotestsrc ! xvimagesink

If you’re having issues with GStreamer, I recommend asking on their support forum.

2 Likes