Streams do not run unless linked to a physical device even if the driver flag is set
gst-launch-1.0 pipewiresrc ! audio/x-raw ! pipewiresink gst-launch-1.0 audiotestsrc ! pipewiresink mode=provide stream-properties=pw,media.class=Audio/Source
The first gstreamer pipeline runs as long as it is connected to a physical microphone. If you link the the second pipewiresink to the first pipewiresrc, then you can hear the test signal. But when you unlink the microphone, then the test signal stops.
I'm probably very confused, but I thought the purpose of the
PW_STREAM_FLAG_DRIVER flag (and the corresponding
mode=provide gstreamer option) was so that you could use a stream just like a real device. The same issue also occurs if you modify pipewiresrc to set
PW_STREAM_FLAG_DRIVER. AFAICT this is because pw_stream relies on other nodes to provide a clock and can't produce it's own clock.
(My original use case was to use gstreamer to connect to a network speaker using
gst-launch-1.0 pipewiresrc ! pulsesink server=184.108.40.206. This works wonderfully, but only as long as I link a local microphone...)