OK so you can without v4l2loopback.
Smoke test:
gst-launch-1.0 \
videotestsrc ! \
video/x-raw,format=YUY2 ! \
pipewiresink mode=provide \
stream-properties="properties,media.class=Video/Source,media.role=Camera"
iPhone/Airplay:
uxplay -vs 0 -vrtp "config-interval=1 ! udpsink host=127.0.0.1 port=6000"
gst-launch-1.0 -v \
udpsrc port=6000 caps="application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96" ! \
rtph264depay ! decodebin ! videoconvert ! \
video/x-raw,format=YUY2 ! \
pipewiresink mode=provide \
stream-properties="properties,media.class=Video/Source,media.role=Camera,node.description=iPhone Camera"
Test page used: mozilla.github.io/webrtc-landing/gum_test.html
In Firefox the config option you’re looking for is called media.webrtc.camera.allow-pipewire.
@jarkko Does it work for you with pipewire 1.6.1? It seems feeding a videostream into a pipewire sink broke for me after upgrading from 1.4.10 to 1.6.x.
@jarkko FWIW, I filed this as a bugreport here: https://gitlab.freedesktop.org/pipewire/pipewire/-/issues/5165